1
0
Fork 0
forked from github/pelican
Commit graph

860 commits

Author SHA1 Message Date
W. Trevor King
29cdb37af3 generators: Use the static format to read Static metadata
This cuts down on the remaining difference between static files and
articles/pages.  The main difference is that path-based metadata is
now parsed for static content.
2013-03-21 14:17:50 -04:00
W. Trevor King
f147d9ec4a readers: Add 'static' to the base Reader's extensions
Instead of just being a base class, we can use it to parse static
files.  It won't actually do any parsing, but we will get path
metadata extraction from read_file, and this will make the
StaticGenerator implementation simpler.
2013-03-21 13:03:54 -04:00
W. Trevor King
ae4fc5a25e utils: Add path_to_url() and generalize get_relative_path()
The old get_relative_path() implementation assumed os.sep == '/',
which doesn't hold on MS Windows.  The new implementation uses
split_all() for a more general component count.

I added path_to_url(), because the:

  '/'.join(split_all(path))

idiom was showing up in a number of cases, and it's easier to
understand what's going on when that reads:

  path_to_url(path)

This will fix a number of places where I think paths and URLs were
conflated, and should improve MS Windows support.
2013-03-21 12:44:44 -04:00
W. Trevor King
b59da89e80 Convert '.' and '..' to the less magical os.curdir and os.pardir
While I'm cleaning up path manipulation, I might as well make things
more semantic.
2013-03-21 12:44:44 -04:00
W. Trevor King
a5c1fdac58 settings: Use splitext to remove extensions, not rpartition 2013-03-21 12:44:44 -04:00
W. Trevor King
e5e455e0e5 Replace os.sep.join with the more robust os.path.join
From the Python docs for os.sep [1]:

  Note that knowing this is not sufficient to be able to parse or
  concatenate pathnames - use os.path.split() and os.path.join()...

Where I touched a line, I also changed double quoted string literals
to single quotes, since they are used more often in the source:

  wking@mjolnir ~/src/pelican $ git grep "'" pelican/*.py | wc -l
  683
  wking@mjolnir ~/src/pelican $ git grep '"' pelican/*.py | wc -l
  181

[1]: http://docs.python.org/3/library/os.html#os.sep
2013-03-21 11:38:14 -04:00
Wraithan (Chris McDonald)
5fcb18ea60 Add help directly to publishconf.py 2013-03-21 03:33:32 -07:00
Justin Mayer
043b9a52d6 Merge pull request #779 from johnmastro/add-period-archives
Add period archives
2013-03-20 08:09:39 -07:00
Justin Mayer
9eda0f79bd External resources should be scheme-independent
By using "//" instead of "http://" when referring to external resources
such as fonts (e.g., from within CSS files), warnings about "insecure"
content can be avoided.
2013-03-18 17:36:35 -07:00
John Mastro
f92c800216 Add a period archives feature and brief docs.
Allows users to have per-year, per-month, and per-day archives of posts
automatically generated. The feature is disabled by default; to enable
it a user must supply format strings for a period's respective
`_SAVE_AS` setting.
2013-03-15 17:22:42 -07:00
W. Trevor King
9a62b5ec62 contents: Add URLWrapper.__repr__
This makes it easier to troubleshoot collections of URLWrappers,
because printing the collection will give you something you can
actually read ;).
2013-03-12 20:41:56 -04:00
W. Trevor King
bfa8851af0 Add the PATH_METADATA setting
Sometimes the base filename doesn't have everything you need.

Remember that os.sep is platform dependent, so using it in a regular
expression for this setting may not be portable (boo MS Windows!).
2013-03-12 15:16:25 -07:00
W. Trevor King
c46ca5d5d1 readers: Split parse_path_metadata from read_file
For easier re-use.  I also extract the path metadata first, so
metadata explicitly listed in the file contents will take precedence
over metadata parsed from the filename.
2013-03-12 15:16:25 -07:00
Alexis Métaireau
12c43b7d4d Make METADATA_PROCESSORS and EXTENSIONS public. 2013-03-12 12:19:53 -07:00
Alexis Métaireau
14d548fc44 Introduce all_articles where articles is shadowed. 2013-03-11 23:07:54 -07:00
William Light
e045515b91 add "output_file" Jinja context variable
"output_file" contains the name of the HTML file that pelican is
currently rendering.
2013-03-10 23:53:41 -07:00
Alexis Métaireau
37f6190c69 URLWrapper moved! 2013-03-10 23:42:08 -07:00
tehkonst
ab035795bc fix slug for feed urls
Conflicts:

	pelican/contents.py
2013-03-10 23:41:02 -07:00
W. Trevor King
33c60a78cd pelican/utils: Add split_all() and rework static URL generation
I think the conversion from native paths to URLs is best put off until
we are actually trying to generate the URL.  The old handling
(introduced in 2692586, Fixes #645 - Making cross-content linking
windows compatible, 2012-12-19) converted the path at StaticContent
initialization, which left you with a bogus StaticContent.src.

Once we drop the 'static' subdirectory, we will be able to drop the
`dest` and `url` parts from the StaticGenerator.generate_context()
handling, which will leave things looking a good deal cleaner than
they do now.
2013-03-10 23:21:38 -07:00
W. Trevor King
49bf80ec39 contents: Convert StaticContent to Static, a Page subclass
Static needs a lot of the same handling as other pages, so make it a
subclass of Page.  The rename from StaticContent to Static makes for
cleaner configuration settings (STATIC_URL instead of
STATICCONTENT_URL).

All currently generated Static instances override the save_as
attribute explicitly on initialization, but it isn't hard to imagine
wanting to adjust STATIC file output based on metadata (e.g. extracted
from their source filename).  With this union, the framework for
manipulating URLs and filenames is shared between all source file
types.
2013-03-10 23:19:56 -07:00
Alexis Métaireau
c6856dec44 Replace \ with / when replacing the URLs. See #763 2013-03-10 23:09:43 -07:00
Alexis Métaireau
14cf5f014c Some doc + various enhancements 2013-03-10 22:57:08 -07:00
Alexis Métaireau
5aeca4826c Use comments in tests, not docstrings. 2013-03-10 22:42:46 -07:00
Alexis Métaireau
fa77c3d66a This should be a warning, not an error :) 2013-03-10 22:30:36 -07:00
Thomas Thurman
372e8c07cf Fixed the stopserver command to use the correct Makefile syntax 2013-03-09 21:27:19 +00:00
Alexis Métaireau
964f7d96d6 endswith can take a list as an argument ;) 2013-03-06 11:46:17 -08:00
W. Trevor King
3f26f9af5b generators: Teach Generator.get_files to handle non-directory input
This makes it easier for StaticGenerator to walk FILES_TO_COPY, where
the input may be a directory or a bare filename.

Non-traversable file types (e.g. everything but directories and
symlinks to directories) are not checked against the exclude list.
The user-level effect of this is that explicit entries in STATIC_PATHS
or FILES_TO_COPY will override a hypothetical STATIC_EXCLUDES setting,
which seems like a reasonable approach.

I also removed the Python 2.5 compatibility check for `followlinks` in
os.walk, since Pelican is now Python >=2.7.
2013-03-06 08:38:45 -05:00
Alexis Métaireau
547f8d2e83 Move the tests into pelican. Fix #500 2013-03-06 00:41:27 -08:00
Irfan Ahmad
2692586abe Fixes #645 - Making cross-content linking windows compatible 2013-03-06 00:04:44 -08:00
Leroy Jiang
4f6467ce08 add disqus_url to comment js block 2013-03-05 23:42:42 -08:00
Justin Mayer
d0e9c52410 Merge pull request #623 from bbinet/url-save_as-override
Override page 'url' and 'save_as' directly from the page metadata. Fixes #400.
2013-03-04 10:11:45 -08:00
Joseph Reagle
168d713df8 ul/li have no top/bottom margins, but list do 2013-03-03 22:35:56 -08:00
Joseph Reagle
9ed4e77049 improve spacing of p and nested lists 2013-03-03 22:35:03 -08:00
Joseph Reagle
92e9f3b313 bom detection and removal 2013-03-03 22:33:16 -08:00
Eric
11bdb437d2 added unique filtering and config limit param
I hacked some code from other modules and some quick googling, first time with py so this may need to be cleaned up.

The functionality is to have a config var in pythonconfig.py and to remove the duplicates `sorted(set())`
2013-03-03 22:18:59 -08:00
Eric
ccef2a6f13 Settings file is pelicanconf.py now. 2013-03-03 22:18:59 -08:00
dave mankoff
44351aaf31 delete output directory properly 2013-03-03 22:14:05 -08:00
nfletton
4a63695ae2 Fixed pagination link error when <DIRECT_TEMPLATE_NAME>_SAVE_AS setting used.
The unit test for this scenario was passing as it was testing for an incorrect 'page_name' variable being set.
2013-03-03 22:11:09 -08:00
Andrew Spiers
205792e9d4 string types have no decode method in py3 2013-03-03 22:00:37 -08:00
yegle
60ae7aa667 Fix: hashlib.md5 funcition only accepts bytes as input 2013-03-03 21:49:42 -08:00
Richard Duivenvoorde
a13e31a76b adding a stopsever target for make 2013-03-03 21:45:08 -08:00
Richard Duivenvoorde
824edb8823 rsync additions
- adding / otherwise you will endup with output on remote
- adding --cvs-exclude (to not sync cvs stuff)
2013-03-03 21:45:08 -08:00
Simon
a7a71da6df Fix a test in the asciidoc reader, and add asciidoc to travis so that
the related tests will not be skipped.
2013-03-03 21:43:04 -08:00
Steve Schwarz
1bbfdf96a0 Display feed(s) in footer if no SOCIAL links
For sites where there are no SOCIAL links defined the FEED_ALL_ATOM and/or the FEED_ALL_RSS links are not displayed.
Also update the functional tests output.
2013-03-03 21:40:55 -08:00
Eric
e721727476 Allow explicit setting of markdown extensions
These additions are to make it easier to disable pygments or any other
extension the user may not want. In the previous version, these plugins are
hardcoded, but by making it a variable in the config, it is possible to not use
pygments or easily load extra markdown plugins if needed; you can have multiple
plugins in one virtual environment and have different configs load them as
needed.

In my `pelicanconf.py` I then have the following:

    MD_EXTENSIONS = ['extra', 'syntaxhighlighter']

where `syntaxhighlighter` is a custom markdown extension I am working on to use
syntax highlighter instead of pygments for code highlighting.
2013-03-03 21:36:45 -08:00
John Kristensen
4e4080c523 Check output directory exists before doing a clean
- if the output directory does not exist the 'make clean' command fails,
   which also means that the 'make html' command which would otherwise
   create the output directory also fails without generating the output
2013-03-03 21:21:05 -08:00
Steve Schwarz
986733e8fb Corrected parsing of categories/tags 2013-03-03 21:17:42 -08:00
Steve Schwarz
8a6d96b289 pelican_import fix for bs4
Quick fix for this traceback:
$ pelican-import --wpfile ~/Downloads/mysite.wordpress.2013-02-24.xml 
Traceback (most recent call last):
  File "/Users/me/.virtualenvs/pelican/bin/pelican-import", line 8, in <module>
    load_entry_point('pelican==3.2', 'console_scripts', 'pelican-import')()
  File "/Users/me/.virtualenvs/pelican/src/pelican/pelican/tools/pelican_import.py", line 363, in main
    disable_slugs=args.disable_slugs or False)
  File "/Users/me/.virtualenvs/pelican/src/pelican/pelican/tools/pelican_import.py", line 238, in fields2pelican
    for title, content, filename, date, author, categories, tags, in_markup in fields:
  File "/Users/me/.virtualenvs/pelican/src/pelican/pelican/tools/pelican_import.py", line 37, in wp2fields
    if item.fetch('wp:status')[0].contents[0] == "publish":
TypeError: 'NoneType' object is not callable

I'm a BeautifulSoup novice but these changes allowed me to import two of my wordpress.xml files.
2013-03-03 21:17:42 -08:00
Sasha Hart
07f4163300 make develop_server.sh notify/cleanup when pelican or server don't start
After waiting for pelican and server to come up, if either one has
died then give a more helpful message and clean up. Previously did not
check for this, so script informed user that everything was running even
if one or both parts failed for whatever reason.

This is meant to provide a little more user-friendliness
in those cases where user has a develop_server.sh in project directory
but forgot to (re)install pelican, activate relevant virtualenv, etc.
as well as other unforeseen situations where one of the processes does
not start.
2013-03-03 21:08:28 -08:00
Alexis Métaireau
3e364bb8a4 Don't overwrite output_path. Fix #750 2013-03-03 21:00:52 -08:00