def main(): title = 'Awe Examples' page = Page(title, width=900) page.register(HighlightJS) page.new('h1').new_text(title) page.new_text('Examples page was created with awe.\n') collapse = page.new_collapse() for example in examples.examples_order: config = examples.exported_examples[example] this_dir = os.path.dirname(__file__) py_file = os.path.join(this_dir, '{}.py'.format(example)) md_file = os.path.join(this_dir, '{}.md'.format(example)) github_link = 'https://github.com/dankilman/awe/blob/master/examples/{}.py'.format( example) static_url = 'https://s3.amazonaws.com/awe-static-files/examples/{}.html'.format( example) image_url = 'https://s3.amazonaws.com/awe-static-files/examples/{}.{}'.format( example, config['extension']) panel = collapse.new_panel('examples/{}.py'.format(example), active=True) (panel.new('h2').s.new_link(github_link).new_inline( 'examples/{}.py'.format(example)).n.new_inline(' ').new_link( static_url).new_inline(' [static demo]').p) with open(md_file) as f: panel.new_markdown(f.read()) panel.new('img', props={'src': image_url}, style={'maxWidth': '100%'}) panel.new_divider() with open(py_file) as f: panel.new('pre').new('code').new_inline( f.read(), style={'borderRadius': '2px'}, props={'className': 'python'}, ) page.start(block=True)
def main(): page = Page() page.start() page.new_text('Header', style={'fontSize': '1.5em', 'color': '#ff0000'}) for i in range(20): page.new_text('{} hello {}'.format(i, i), style={'color': 'blue'}) time.sleep(2) page.block()
def main(): page = Page() page.start() for i in range(3): time.sleep(1) page.new_text('1') page.new_text('2') page.block()
def main(): page = Page() page.new_text('single line') page.new_text() page.new_text('line 1\nline 2\nline3\n') page.new_text('other single line') page.start(block=True)
def test_export(): text = 'Hello Test Offline' page = Page() page.new_text(text) assert text in page.export() def custom_export_fn(index_html): return index_html.upper() assert text.upper() in page.export(custom_export_fn) page = Page(export_fn=custom_export_fn) page.new_text(text) assert text.upper() in page.export()
def test_remove(): page = Page() t1 = page.new_text('t1') c1 = page.new_card() t2 = c1.new_text('t2') t3 = c1.new_text('t3') i1 = page.new_input(id='i1') i2_on_enter = lambda: None i2 = page.new_input(on_enter=i2_on_enter, id='i2') b1_fn = lambda: None b1 = page.new_button(b1_fn, id='b1') registry = page._registry assert not any(e._removed for e in [t1, c1, t2, t3, i1, i2, b1]) assert {c.id for c in page.children} == {t1.id, c1.id, i1.id, i2.id, b1.id} assert registry.elements == {t.id: t for t in [t1, c1, t2, t3, i1, i2, b1]} assert registry.functions == {'i2': i2_on_enter, 'b1': b1_fn} assert registry.variables == {'i1': i1._variable, 'i2': i2._variable} def entries(li): return [{'type': 'element', 'id': i, 'rootId': 'root'} for i in li] assert t1 in page.children assert not t1._removed ids = t1.remove() assert ids == entries([t1.id]) assert registry.elements == {t.id: t for t in [c1, t2, t3, i1, i2, b1]} assert t1 not in page.children assert t1._removed ids = c1.remove() assert set(e['id'] for e in ids) == {c1.id, t2.id, t3.id} assert c1 not in page.children assert c1._removed assert t2._removed assert t3._removed assert registry.elements == {t.id: t for t in [i1, i2, b1]} ids = page.remove(i1) assert ids == entries([i1.id]) + [{'type': 'variable', 'id': i1.id}] assert i1._removed assert i1 not in page.children assert registry.elements == {t.id: t for t in [i2, b1]} assert registry.variables == {'i2': i2._variable} ids = i2.remove() assert ids == entries([i2.id]) + [{'type': 'variable', 'id': i2.id}] assert i2._removed assert i2 not in page.children assert registry.elements == {t.id: t for t in [b1]} assert registry.variables == {} assert registry.functions == {'b1': b1_fn} ids = b1.remove() assert ids == entries([b1.id]) assert b1._removed assert not page.children assert not registry.elements assert not registry.variables assert not registry.functions
def test_ls_and_get(): page = Page() text1 = page.new_text() page.start(open_browser=False) output = subprocess.check_output(['awe', '-l', 'ls']) parsed_output = json.loads(output) assert parsed_output[text1.id]['id'] == text1.id output = subprocess.check_output(['awe', '-l', 'get', '-e', text1.id]) parsed_output = json.loads(output) assert parsed_output['id'] == text1.id
def main(): page = Page() b = page.element_builder page.new('h1').new_text('Simple Report') page.new_text('''Things weren't always so good for Foxy Fox. There were days when Fox had to do {thing}, which was hard and not very satisfying. '''.format(thing='documentation')) page.new('div').s.new_inline('But things are ').n.new('em').new_inline( 'better').n.new_inline(' now.') page.new_text() table = page.new_table(['Day', 'Number Of Emotions']) for i in range(5): number = random.randint(0, 1000) url = 'https://www.google.com/search?q={}'.format(number) table.append([ 'Day {}'.format(i), b.link(url).s.new('em').new_inline( str(number)).n.new_inline(' Emotions') ]) page.start(block=True)
def test_stack(): page = Page() assert page.n is page assert page._stack == [page] assert page.s is page assert page._stack == [page, page] assert page.n is page assert page._stack == [page, page] assert page.p is page assert page._stack == [page] assert page.n is page assert page._stack == [page] text1 = page.new_text() assert text1.n is page assert text1._stack == [page] assert text1.s is text1 assert text1._stack == [page, text1] assert text1.n is text1 assert text1._stack == [page, text1] assert text1.p is text1 assert text1._stack == [page] assert text1.n is page assert text1._stack == [page] prop = text1.new_prop('prop') assert prop.n is prop assert prop._stack == [prop] assert prop.s is prop assert prop._stack == [prop, prop] assert prop.n is prop assert prop._stack == [prop, prop] assert prop.p is prop assert prop._stack == [prop] assert prop.n is prop assert prop._stack == [prop] text2 = prop.new_text() assert text2.n is prop assert text2._stack == [prop] assert text2.s is text2 assert text2._stack == [prop, text2] assert text2.n is text2 assert text2._stack == [prop, text2] assert text2.p is text2 assert text2._stack == [prop] assert text2.n is prop assert text2._stack == [prop]
def test_remove_with_prop_elements(): page = Page() text1 = page.new_text() prop1 = text1.new_prop('prop1') prop2 = text1.new_prop('prop2') prop1.new_text() prop1.new_text() prop2.new_text() prop2.new_text() removed = text1.remove() def prop_removal(root): return [{'type': 'root', 'id': root.id}] text_removal = [{'type': 'element', 'id': text1.id, 'rootId': 'root'}] assert ((removed == text_removal + prop_removal(prop1) + prop_removal(prop2)) or (removed == text_removal + prop_removal(prop2) + prop_removal(prop1)))
def main(): page = Page() page.new_text('Hello World!') page.start(block=True)
def main(): page = Page(offline=True, export_fn=export_fn) page.new_text('Hello') sys.stdout.write(page.export()['path'])