mirror of
https://github.com/fastfloat/fast_float.git
synced 2025-12-06 08:46:49 +08:00
88 lines
2.8 KiB
Python
88 lines
2.8 KiB
Python
# text parts
|
|
processed_files = { }
|
|
|
|
# authors
|
|
for filename in ['AUTHORS', 'CONTRIBUTORS']:
|
|
with open(filename, encoding='utf8') as f:
|
|
text = ''
|
|
for line in f:
|
|
if filename == 'AUTHORS':
|
|
text += '// fast_float by ' + line
|
|
if filename == 'CONTRIBUTORS':
|
|
text += '// with contributions from ' + line
|
|
processed_files[filename] = text + '//\n'
|
|
|
|
# licenses
|
|
for filename in ['LICENSE-MIT', 'LICENSE-APACHE']:
|
|
lines = []
|
|
with open(filename, encoding='utf8') as f:
|
|
lines = f.readlines()
|
|
|
|
# Retrieve subset required for inclusion in source
|
|
if filename == 'LICENSE-APACHE':
|
|
lines = [
|
|
' Copyright 2021 The fast_float authors\n',
|
|
*lines[179:-1]
|
|
]
|
|
|
|
text = ''
|
|
for line in lines:
|
|
text += '// ' + line.strip() + '\n'
|
|
processed_files[filename] = text
|
|
|
|
# code
|
|
for filename in [ 'constexpr_feature_detect.h', 'float_common.h', 'fast_float.h', 'ascii_number.h',
|
|
'fast_table.h', 'decimal_to_binary.h', 'bigint.h', 'digit_comparison.h', 'parse_number.h']:
|
|
with open('include/fast_float/' + filename, encoding='utf8') as f:
|
|
text = ''
|
|
for line in f:
|
|
if line.startswith('#include "'): continue
|
|
text += line
|
|
processed_files[filename] = '\n' + text
|
|
|
|
# command line
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser(description='Amalgamate fast_float.')
|
|
parser.add_argument('--license', default='DUAL', choices=['DUAL', 'MIT', 'APACHE'], help='choose license')
|
|
parser.add_argument('--output', default='', help='output file (stdout if none')
|
|
|
|
args = parser.parse_args()
|
|
|
|
def license_content(license_arg):
|
|
result = []
|
|
|
|
if license_arg == 'DUAL':
|
|
result += [
|
|
'// Licensed under the Apache License, Version 2.0, or the\n',
|
|
'// MIT License at your option. This file may not be copied,\n',
|
|
'// modified, or distributed except according to those terms.\n',
|
|
'//\n'
|
|
]
|
|
|
|
if license_arg in ('DUAL', 'MIT'):
|
|
result.append('// MIT License Notice\n//\n')
|
|
result.append(processed_files['LICENSE-MIT'])
|
|
result.append('//\n')
|
|
if license_arg in ('DUAL', 'APACHE'):
|
|
result.append('// Apache License (Version 2.0) Notice\n//\n')
|
|
result.append(processed_files['LICENSE-APACHE'])
|
|
result.append('//\n')
|
|
|
|
return result
|
|
|
|
text = ''.join([
|
|
processed_files['AUTHORS'], processed_files['CONTRIBUTORS'],
|
|
*license_content(args.license),
|
|
processed_files['constexpr_feature_detect.h'],
|
|
processed_files['float_common.h'], processed_files['fast_float.h'],
|
|
processed_files['ascii_number.h'], processed_files['fast_table.h'],
|
|
processed_files['decimal_to_binary.h'], processed_files['bigint.h'],
|
|
processed_files['digit_comparison.h'], processed_files['parse_number.h']])
|
|
|
|
if args.output:
|
|
with open(args.output, 'wt', encoding='utf8') as f:
|
|
f.write(text)
|
|
else:
|
|
print(text)
|