@tag
and @CmTag
. You can decide their behavior and use them within content-managers tooautoPrettify()
- Powered by bs4 and a feature like no otherpip3 install sierra
pip3 install --upgrade sierra
from sierra import *
title('Hello World!')
The title()
function at the start is mandatory, since it commences the HTML and the CSS file, which is created in the working directory upon execution on the code. @tag
and @CmTag
with just three lines of code. Say you want to create a function for <meta>
@tag
def meta(**kwargs):
pass
# Using them
meta(name="description", content="This is some description")
meta(name="viewport", content="width=device-width", initial_scale=1.0)
Underscores are used for hyphens (same applies to CSS) and Python-conficting arguments are prefixed with a double underscore.
Using argument text inside of a function defined in @tag
will create a tag that opens, enters text, and closes. Something like this:
@tag
def script(**kwargs):
pass
script(__async="", src="some_src", text="some_text")
Is the equivalent of:
<script async="" src="some_src">some_text</script>
Want to add some JS? Simple enough. Just create a function for the <script>
tag with a context manager behavior using @CmTag
and you're golden.
@CmTag
def script(**kwargs):
pass
# Here I'll be replicating the script needed to add Google Analytics to a webpage
with script(__aync="", src="https://www.googletagmanager.com/gtag/js?id=UA—XXXXXXXX-X"):
pass
with script():
writeWA('''
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA—XXXXXXXX-X');''')
This is the equivalent of:
<script async src="https://www.googletagmanager.com/gtag/js?id=UA—XXXXXXXX-X"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA—XXXXXXXX-X');
</script>
writeWA()
writes text entered into it into the HTML file as it is. addFont()
addFont("https://fonts.googleapis.com/css2?family=Roboto&display=swap")
Once things at the of the HTML are settled (CSS is automatically linked), begin the body of the HTML with:
openBody()
# You can add any number of styling arguments to the body within openBody()
openBody(background_color='yellowgreen', opacity='0.9')
You can create <div> and <section> tags this way:
with div(__class="some_class") as d:
p('This is a paragraph!')
d.css(background_color="#5886d1")
Let's break this down but-by-bit:__class
, which is essentially the tag attribute class (remember Python-conflicting) arguments are prefixed by a double underscore. p()
is a function, as the name suggests, to add a <p>
tag. You can give the tag attributes with **kwargs
, if you like.p('Hello World!', __class='p_class')
is the same as <p class="p_class">Hello World!</p>
d.css()
. This adds CSS to the class mentioned within div()
. If a class is mentioned, CSS is added to that class as the first priority. If an id is mentioned, CSS is added to that id as a second priority. If none of both are mentioned, CSS is just added to div. Tag()
with Tag('some_tag', id='some_id') as t:
p('A paragraph in ')
t.css(color='blue')
Although here, .css()
behaves differently. It is independent of tag attributes, meaning CSS is added directly to the tag mentioned, which is some_tagwith Table() as t:
t.get_table("path/to/file.csv") # Add attributes with **kwargs here
t.css(border="1px solid black") # Use writeCSS to add CSS to a specific attribute
There are MANY more functionalities to Sierra that you can see from the documentation autoPrettify()
It takes in no arguments, but provides SO much to the code. autoPrettify()
works.
autoPrettify()
, a feature like no other. Harness the power of Python for your web applications!
Note for users
If you have any suggestions or issue or just want to open a discussion, feel free to do so!