Exemple #1
0
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)
Exemple #2
0
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()
Exemple #3
0
def main():
    page = Page()
    page.start()
    for i in range(3):
        time.sleep(1)
    page.new_text('1')
    page.new_text('2')
    page.block()
Exemple #4
0
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)
Exemple #5
0
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()
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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)
Exemple #9
0
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]
Exemple #10
0
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)))
Exemple #11
0
def main():
    page = Page()
    page.new_text('Hello World!')
    page.start(block=True)
Exemple #12
0
def main():
    page = Page(offline=True, export_fn=export_fn)
    page.new_text('Hello')
    sys.stdout.write(page.export()['path'])