Browse Source

Made sure the equals type args are supported for short forms as well

main
Lakshmi Vyasarajan 13 years ago
parent
commit
581a789121
7 changed files with 40 additions and 35 deletions
  1. +1
    -3
      hyde/ext/plugins/urls.py
  2. +27
    -23
      hyde/plugin.py
  3. +0
    -1
      hyde/tests/ext/test_images.py
  4. +0
    -3
      hyde/tests/ext/test_stylus.py
  5. +0
    -1
      hyde/tests/ext/test_tagger.py
  6. +1
    -2
      hyde/tests/test_jinja2template.py
  7. +11
    -2
      hyde/util.py

+ 1
- 3
hyde/ext/plugins/urls.py View File

@@ -51,8 +51,6 @@ class UrlCleanerPlugin(Plugin):


settings = config.urlcleaner settings = config.urlcleaner


print settings.to_dict()

def clean_url(urlgetter): def clean_url(urlgetter):
@wraps(urlgetter) @wraps(urlgetter)
def wrapper(site, path): def wrapper(site, path):
@@ -73,4 +71,4 @@ class UrlCleanerPlugin(Plugin):
return wrapper return wrapper


Site.___url_cleaner_patched___ = True Site.___url_cleaner_patched___ = True
Site.content_url = clean_url(Site.content_url)
Site.content_url = clean_url(Site.content_url)

+ 27
- 23
hyde/plugin.py View File

@@ -8,10 +8,11 @@ from hyde import loader


from hyde.exceptions import HydeException from hyde.exceptions import HydeException
from hyde.fs import File from hyde.fs import File
from hyde.util import getLoggerWithNullHandler
from hyde.util import getLoggerWithNullHandler, first_match
from hyde.model import Expando from hyde.model import Expando


from functools import partial from functools import partial

import re import re
import subprocess import subprocess
import traceback import traceback
@@ -263,6 +264,11 @@ class CLTransformer(Plugin):
return app return app


def option_prefix(self, option): def option_prefix(self, option):
"""
Return the prefix for the given option.

Defaults to --.
"""
return "--" return "--"


def process_args(self, supported): def process_args(self, supported):
@@ -273,32 +279,30 @@ class CLTransformer(Plugin):
args = {} args = {}
args.update(self.defaults) args.update(self.defaults)
try: try:
args.update(getattr(self.settings, 'args').to_dict())
args.update(self.settings.args.to_dict())
except AttributeError: except AttributeError:
pass pass


result = []
for arg in supported:
if isinstance(arg, tuple):
(descriptive, short) = arg
params = []
for option in supported:
if isinstance(option, tuple):
(descriptive, short) = option
else: else:
descriptive = short = arg

equal = False
if descriptive.endswith("="):
descriptive = descriptive[:-1]
equal = True
if descriptive in args or short in args:
val = args[descriptive if descriptive in args else short]
if equal and val:
result.append("%s%s=%s" % (self.option_prefix(descriptive),
descriptive, str(val)))
else:
result.append("%s%s" % (self.option_prefix(descriptive),
descriptive))
if val:
result.append(str(val))
return result
descriptive = short = option

options = [descriptive.rstrip("="), short.rstrip("=")]
match = first_match(lambda arg: arg in options, args)
if match:
val = args[match]
param = "%s%s" % (self.option_prefix(descriptive),
descriptive)
if descriptive.endswith("="):
param.append(val)
val = None
params.append(param)
if val:
params.append(val)
return params


def call_app(self, args): def call_app(self, args):
""" """


+ 0
- 1
hyde/tests/ext/test_images.py View File

@@ -45,7 +45,6 @@ class TestImageSizer(object):
assert f.exists assert f.exists
html = f.read_all() html = f.read_all()
assert html assert html
print html
return html return html


def test_size_image(self): def test_size_image(self):


+ 0
- 3
hyde/tests/ext/test_stylus.py View File

@@ -45,9 +45,6 @@ class TestLess(object):
assert target.exists assert target.exists
text = target.read_all() text = target.read_all()
expected_text = File(STYLUS_SOURCE.child('expected-site.css')).read_all() expected_text = File(STYLUS_SOURCE.child('expected-site.css')).read_all()
print text.strip()
print "=" * 80
print expected_text.strip()
assert text.strip() == expected_text.strip() assert text.strip() == expected_text.strip()


def test_can_compress_with_stylus(self): def test_can_compress_with_stylus(self):


+ 0
- 1
hyde/tests/ext/test_tagger.py View File

@@ -86,7 +86,6 @@ class TestTagger(object):
assert q assert q


print q
assert q('li').length == 2 assert q('li').length == 2
assert q('li a:first-child').attr('href') == '/blog/another-sad-post.html' assert q('li a:first-child').attr('href') == '/blog/another-sad-post.html'
assert q('li a:eq(1)').attr('href') == '/blog/sad-post.html' assert q('li a:eq(1)').attr('href') == '/blog/sad-post.html'


+ 1
- 2
hyde/tests/test_jinja2template.py View File

@@ -590,11 +590,10 @@ item_list:
t.configure(None) t.configure(None)
t.env.filters['dateformat'] = dateformat t.env.filters['dateformat'] = dateformat
html = t.render(text, {}).strip() html = t.render(text, {}).strip()
print html
actual = PyQuery(html) actual = PyQuery(html)
assert actual("ul").length == 2 assert actual("ul").length == 2
assert actual("li").length == 6 assert actual("li").length == 6
items = [item.text for item in actual("ul.top li")] items = [item.text for item in actual("ul.top li")]
assert items == ["A", "B", "C"] assert items == ["A", "B", "C"]
items = [item.text for item in actual("ul.mid li")] items = [item.text for item in actual("ul.mid li")]
assert items == ["D", "E", "F"]
assert items == ["D", "E", "F"]

+ 11
- 2
hyde/util.py View File

@@ -92,7 +92,6 @@ class ColorFormatter(logging.Formatter):


logging.ColorFormatter = ColorFormatter logging.ColorFormatter = ColorFormatter



def make_method(method_name, method_): def make_method(method_name, method_):
def method__(*args, **kwargs): def method__(*args, **kwargs):
return method_(*args, **kwargs) return method_(*args, **kwargs)
@@ -112,4 +111,14 @@ def add_method(obj, method_name, method_, *args, **kwargs):
def pairwalk(iterable): def pairwalk(iterable):
a, b = tee(iterable) a, b = tee(iterable)
next(b, None) next(b, None)
return izip(a, b)
return izip(a, b)

def first_match(predicate, iterable):
"""
Gets the first element matched by the predicate
in the iterable.
"""
for item in iterable:
if predicate(item):
return item
return None

Loading…
Cancel
Save