aboutsummaryrefslogtreecommitdiff
path: root/pyblog (unfollow)
Commit message (Collapse)AuthorFilesLines
2017-05-19Add tagcloudNeodarZ1-4/+62
2017-05-18Add menu and tableneodarz1-1/+180
2017-05-18Remove usless printneodarz1-3/+0
2017-05-06Add new right submenuneodarz1-4/+47
2017-05-05Adapt designneodarz1-24/+57
2017-05-04Add ideaNeodarZ1-47/+53
2017-05-04Add some conf fileneodarz1-1/+1
2017-05-04Drop some usless code and add some usfull codeneodarz1-6/+4
2017-05-01Add some testNeodarZ1-25/+49
2017-04-28Update to a new personalised versionneodarz1-6/+222
2017-02-01Sunset this blogZhiming Wang1-2/+2
2016-07-24pyblog: Handle custom domainZhiming Wang1-1/+6
Change BLOG_HOME and add CNAME file with custom domain to the build dir.
2016-02-14Add site ownership verification file for Google Search ConsoleZhiming Wang1-2/+2
I used to have Google Analytics installed which proved my ownership, but since I removed it in 01b3805, I need to prove it in another way, and adding a file that no visitor will notice is the least intrusive.
2016-02-14pyblog: Fix bug in exclude list featureZhiming Wang1-8/+9
Previously exclude_list is a list of relative paths, and it is hard to deal with "./" resulted from joining an empty root with a name, thus exclude list items in the root directory (e.g., ./template.html) aren't really excluded. Not to mention the awkward trailing slash handling, and other resolution issues (mainly ..). In this commit we switch to an absolute exclude_list, eliminating the aforementioned bug and simplifing exclude_list queries.
2016-01-25pyblog: Allow opening interactive shell when deployingZhiming Wang1-2/+12
This almost always happens when I gendeploy: gen asks me to touch the new post which I agree, but then the project root is dirty and I'm greeted with the continue or not prompt, at which point I have no choice but to open a new shell (or ^Z suspend the current job) to commit the changes. This commit allows to open an interactive shell in place when project root is found to be dirty when deploying, which nicely solves the issue. Closes #10.
2016-01-08pyblog: new_post: Write a blank line after the YAML blockZhiming Wang1-1/+1
2016-01-08Add stuff to source/ and exclude themZhiming Wang1-2/+1
The lonely templates/template.html finally finds it home in the cozy source/, where it rightfully belongs, without the need to worry about being exposed to the world in build/ ;) The full fontello distribution I downloaded (and unpacked) from fontello.com is now in source/fonts/fontello.
2016-01-08pyblog: Implement exclude list featureZhiming Wang1-2/+30
Controlled by .exclude under source/. Allows assets, e.g., template.html be placed under source/ but not copied over to deployment.
2016-01-08Site design refresh part IZhiming Wang1-12/+1
Highlights: * Change font to Times/Times New Roman + Courier; * Text slightly darkened across the board to account for the thinner Times; * Eliminate line numbers; * Use custom highlight.css (based on highlight-css supplied by Pandoc, but hightlight more classes when Pandoc falls short, e.g., span.im for Python from and import). Closes #5 because we don't have line numbers anymore.
2015-12-31pyblog: Implement the image size Markdown extensionZhiming Wang1-0/+47
2015-12-06pyblog: Correct typosZhiming Wang1-2/+2
2015-10-15pyblog: do not overwrite existing file when creating new postZhiming Wang1-0/+4
Fixes #7.
2015-09-21pyblog: date-display => date_display, and update postsZhiming Wang1-3/+3
Looks slightly more professional.
2015-09-05pyblog: add --no-verify to git-commit for buildsZhiming Wang1-1/+1
No point in checking for trailing whitespace etc. in builds.
2015-09-05Self host webfontsZhiming Wang1-2/+4
Sometimes (e.g., occasionally in China) Google/FontAwesome webfonts might not be available, rendering the whole site unusable.
2015-08-27pyblog: add post selector for easier editing of existing postsZhiming Wang1-0/+213
As an added bonus, new post also automatically opens in a text editor now.
2015-08-05pyblog: change generated commit messageZhiming Wang1-1/+1
2015-08-02pyblog: do not keep open .nojekyllZhiming Wang1-2/+3
That will lead to Dropbox constantly syncing the file under preview mode.
2015-07-26tons of logic and performance improvementsZhiming Wang1-12/+10
The main aim is a more logical DOM structure and more performant CSS.
2015-07-24pyblog: add postprocessor process_footnote_backlinksZhiming Wang1-0/+13
Add class and variation selector (# U+FE0E: VARIATION SELECTOR-15) to U+21A9: LEFTWARDS ARROW WITH HOOK to fix outstanding font issue of footnote backlinks on mobile. Updated styles accordingly. Trick learned from Daring Fireball. Before: https://i.imgur.com/eUbL1k8.png After: https://i.imgur.com/msv3INn.png
2015-07-23pyblog: convert each <img> tag in <article> to a link to its originalZhiming Wang1-0/+11
2015-07-23pyblog: make HTML postprocessing extensibleZhiming Wang1-8/+16
Previously there's only one postprocessing function `number_code_lines`, which directly reads an HTML file, and after processing, writes back. Now the reading and writing is handled by a dedicated dispatcher `postprocess_html_file`, which can call multiple postprocessors that operates on a soup object.
2015-07-17fix line number placementZhiming Wang1-3/+3
Global font size in each style sheet has been tweaked very carefully so that the precise line height is very close to a whole number of pixels, so that precision alignment using em, which aligns something precise (top: 13.5em) to something inprecise (line heights, with accumulated errors due to rounding in every line), is not lost. Note that Firefox is NOT supported, since each line seems to always occupy one more pixel than the calculated line height. For some reason line numbers in the print view are still rather problematic at a page continuation. In Chrome and Safari, the first two line numbers on a new page tend to overlap, so everything afterwards are off (and on Firefox line numbers do not show up on the second page at all). Anyway, printing shouldn't be a big concern.
2015-07-17index.html TOC: use <table> instead of <ul>Zhiming Wang1-5/+17
For better formatting. The following screenshots illustrate the difference: * https://i.imgur.com/ZfkUpBG.png * https://i.imgur.com/S6cRK00.png I also reduced the indentation on the left of each year's index from 2em to 1em.
2015-07-17take generator source modification time into accountZhiming Wang1-1/+4
Regenerate a page if the generator mtime is later than the page's mtime (just like for the template). Previewer still should be relaunched after modification to the generator, since the generator won't be patched until the next run.
2015-07-05fixes for beautifulsoup4 4.4.0Zhiming Wang1-11/+19
* Explicitly specify the lxml parser to suppress warnings; * Supposedly fix the AttributeError: 'NoneType' object has no attribute 'next_element' issue [1] with BeautifulSoup when finding elements after extracting certain tags. I bet I've encountered that error before, but it seemed to went away somehow. Not this time. Without digging into to much detail (don't have time to file a bug or anything), this fix -- precompile a list of tags to extract, and only extract after done with other processing -- seem to work. * Add .nojekyll to root of build dir (https://help.github.com/articles/files-that-start-with-an-underscore-are-missing/). [1]: Full traceback: --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-7-9d3d20b34e0c> in <module>() ----> 1 a.footer /Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in __getattr__(self, tag) 995 # We special case contents to avoid recursion. 996 elif not tag.startswith("__") and not tag=="contents": --> 997 return self.find(tag) 998 raise AttributeError( 999 "'%s' object has no attribute '%s'" % (self.__class__, tag)) /Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in find(self, name, attrs, recursive, text, **kwargs) 1232 criteria.""" 1233 r = None -> 1234 l = self.find_all(name, attrs, recursive, text, 1, **kwargs) 1235 if l: 1236 r = l[0] /Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in find_all(self, name, attrs, recursive, text, limit, **kwargs) 1253 if not recursive: 1254 generator = self.children -> 1255 return self._find_all(name, attrs, text, limit, generator, **kwargs) 1256 findAll = find_all # BS3 1257 findChildren = find_all # BS2 /Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in _find_all(self, name, attrs, text, limit, generator, **kwargs) 527 while True: 528 try: --> 529 i = next(generator) 530 except StopIteration: 531 break /Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in descendants(self) 1271 while current is not stopNode: 1272 yield current -> 1273 current = current.next_element 1274 1275 # CSS selector code AttributeError: 'NoneType' object has no attribute 'next_element'
2015-06-16fix font issues: moving back to Droid Sans Mono for codeZhiming Wang1-3/+3
I just noticed that code font is crazy without Consolas installed (I recently reinstalled my OS and got rid of Office for Mac 2011 — that's probably why). The line numbers are all off (since the line heights are carefully pre-calculated, and fallback fonts of different leadings won't help). Therefore, I'm moving to the quite nice looking and controllable Droid Sans Mono. Isn't as satisfactory as Consolas on the web, but certainly better than Monaco. Note: I originally copied my list Consolas, Monaco, 'Andale Mono', monospace (I added Courier since I like it a lot as the primitive monospace font) from MDN Wiki, but now it looks like a bad choice when I don't have Consolas any more. By the way, MDN Wiki renders line numbers using JS, so at least they are able to calculate the line heights. I'm serving everything statically, so this is a problem.
2015-06-10pyblog: CDATA text cannot be reusedZhiming Wang1-1/+1
Each lxml.etree._Element.text needs a new CDATA.
2015-06-10pyblog: use lxml instead of xmlZhiming Wang1-38/+7
Specifically lxml.etree instead of xml.etree.ElementTree. This allows CDATA without hack.
2015-06-10pyblog: fix typo in atom feed subtitleZhiming Wang1-1/+2
Subtitle was added along with RSS, but I accidentally used <title> instead of <subtitle> for the tag.
2015-06-10pyblog: implement RSS feedZhiming Wang1-23/+204
2015-06-09pyblog: extract script tags from feedsZhiming Wang1-0/+3
Fixes #2.
2015-06-09pyblog: fix URL formatsZhiming Wang1-6/+8
Use canonical format for BLOG_HOME, and use urllib.parse.join for safe concatenation.
2015-06-09pyblog: do not include line-number classes in feedZhiming Wang1-0/+3
For one thing, the top attribute is not recommended in feeds (see https://github.com/zmwangx/zmwangx.github.io/issues/2). Also, extracting line numbers (which are useless in feeds) make the feeds smaller.
2015-05-22pyblog: bug fix in auto retouchZhiming Wang1-7/+11
2015-05-19pyblog: smarter auto touchZhiming Wang1-15/+16
Now reading date directly from post.
2015-05-14add noscript tag for javascript embedded asciicastZhiming Wang1-0/+2
2015-05-14pyblog: fix bug in re match object handlingZhiming Wang1-3/+3
Somehow the linter failed to catch the obvious syntax errors.
2015-05-14add source code line numbersZhiming Wang1-0/+36
The way I handle line numbers and the pre block in general is inspired by the MDN wiki. See, for instance, https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript a screenshot is here: https://i.imgur.com/982TBDc.png Also tweaked other styles, e.g., changed the primary monospace font to Consolas, and slightly tweaked a few old posts.
2015-05-13pyblog: smarter autotouch in gen_deployZhiming Wang1-3/+13