def jsonify_markdown(markdown_file): nester = CMarkASTNester() renderer = Renderer() ast = get_markdown_ast(markdown_file) nested = nester.nest(ast) rendered = renderer.stringify_dict(nested) return rendered
def jsonify_markdown(markdown_file, outfile, indent): nester = CMarkASTNester() renderer = Renderer() with writable_io_or_stdout(outfile) as f: ast = get_markdown_ast(markdown_file) nested = nester.nest(ast) rendered = renderer.stringify_dict(nested) json.dump(rendered, f, indent=indent) f.write("\n") return 0
def main(argv): rss_file_name = argv[0] release_notes_file_name = argv[1] if 'bin' not in os.getcwd(): os.chdir('./source/bin/build_scripts') output_path = '../../../deployment/regional-s3-assets/' make_dir(output_path) print('Loading CHANGELOG.md into memory...') with open('../../../deployment/CHANGELOG.md', 'r', encoding="utf-8") as content_file: changelog = content_file.read() print('Parsing CHANGELOG.md...') ast = CommonMark.DocParser().parse(changelog) ast_dict = CMarkASTNester().nest(ast) print('Converting CHANGELOG.md into JSON...') # JSON representation of the CHANGELOG.md _json = Renderer().stringify_dict(ast_dict) print('Saving CHANGELOG.md JSON into file...') file = open('CHANGELOG.json', 'w', encoding="utf-8") file.write(json.dumps(_json)) file.close() # Python dictionary representation of the CHANGELOG.md print('Converting CHANGELOG JSON into Python dict...') changelog = next(iter(_json.values())) j2loader = jinja2.FileSystemLoader('./') j2env = jinja2.Environment(loader=j2loader) print('Processing RSS xml Jinja template...') process_j2_template(j2env, changelog, rss_file_name + ".j2", output_path + rss_file_name) print('Processing Release notes html Jinja template...') process_j2_template(j2env, changelog, release_notes_file_name + ".j2", output_path + release_notes_file_name)
"Reading the .xyz file failed in line {0}. Please check the format." .format(lines_read + 2)) f.close() atoms = np.array(atoms) V = np.array(V) return atoms, V def get_markdown_ast(markdown_file): f = open(markdown_file, 'r') return CommonMark.DocParser().parse(f.read()) nester = CMarkASTNester() renderer = Renderer() def md2json(): ast = get_markdown_ast(filename) nested = nester.nest(ast) rendered = renderer.stringify_dict(nested) return json def get_charge(filename): if not os.path.isfile(filename): filename = filename.replace("README", "readme") cmd = 'grep "Total charge on system is" ' + filename
def test_nester_lists_correctly(list_nested): stringified = Renderer().stringify_dict(list_nested) l = stringified['Heading'] assert l == ['a', 'b', ['b.a', 'b.b'], 'c']
def extract_json(fileName): ast = CommonMark.DocParser().parse(fileName.read()) nestedAst = CMarkASTNester().nest(ast) orderdDict = Renderer().stringify_dict(nestedAst) return json.loads(json.dumps(orderdDict, indent=4))
def query(self, query): if not query: return [{ 'Title': 'cmd blog', 'SubTitle': 'cb for cmb blog on github. author: [email protected](点击打开github项目)', 'IcoPath': 'icon.png', "JsonRPCAction": { "method": "openUrl", "parameters": [DIR_BASE_URL] }, }] logging.info(str(query)) if query == 'update': # 强制刷新 rst = Main.update_github() if rst == True: return [{ 'Title': 'update success', 'SubTitle': 'clone/pull github success!', 'IcoPath': 'icon.png' }] else: return [{ 'Title': 'update failed', 'SubTitle': rst, 'IcoPath': 'icon.png' }] dt = DirTree().buildRecursive2(cmdblog_path, ignoreDirs=[".idea", ".git"]) # print(dt) results = [] query_list = query.split(' ')[0:2] # 最多取前两个参数 if len(query_list) == 1: q1 = query_list[0] for k in dt: if k.find(q1) != -1: res = { "Title": k, "SubTitle": k + "(回车自动补全)", "IcoPath": "icon.png", # 打开所在的文件夹路径 "JsonRPCAction": { # "method": "openUrl", "parameters": [DIR_BASE_URL + str(k)]}, "method": "change_query", "parameters": ['cb ' + k + ' '], "dontHideAfterAction": True, # True: 执行操作后不隐藏wox } } results.append(res) return results else: # 当有两个参数的时候,第一个参数q1必须完全匹配, q2支持k的模糊搜索,凡是匹配的readme都打开 q1, q2 = query_list if q1 not in dt: return [] # 查找思路:直接构造readme文件的路径,查找是否存在该文件 for k in dt[q1]: if k.find(q2) != -1: for _ in dt[q1][k]: readme_path = os.path.join(cmdblog_path, q1, k, READ_ME) if os.path.isfile(readme_path): with open(readme_path, 'r', encoding='UTF-8') as f: j1 = list_nested(f.read()) j2 = Renderer().stringify_dict(j1) for x, y in j2['Summary'].items( ) if 'Summary' in j2 else {}: p = pertty(y) if p[0:4].lower() == "http": res = { "Title": k + ": " + x, "SubTitle": p + "(回车可打开url)", "IcoPath": "icon.png", "JsonRPCAction": { # 打开所在的文件夹路径 "method": "openUrl", "parameters": [p], # 将命令拷贝到剪贴板 } } else: res = { "Title": k + ": " + x, "SubTitle": p + "(回车可复制命令行)", "IcoPath": "icon.png", "JsonRPCAction": { # 打开所在的文件夹路径 "method": "copy_to_clip", "parameters": [p], # 将命令拷贝到剪贴板 } } results.append(res) return results