text:
|Version 40 (modified by xi, 9 years ago) (diff)
PyYAML Documentation
RPG-ish descriptions are stolen from the Angband rogue-like game. Names of the heroes are generated with MudNames.
This documentation is very brief and incomplete. Feel free to fix or improve it.
PyYAML Documentation
- Installation
- Frequently Asked Questions
- Tutorial
- YAML syntax
- YAML tags and Python types
- Reference
- Deviations from the specification
- Notes
Download the source package PyYAML-3.06.tar.gz and unpack it. Go to the directory PyYAML-3.06 and run
$ python setup.py install
If you want to use LibYAML bindings, which are much faster than the pure Python version, you need to download and install LibYAML. Then you may build and install the bindings by executing
$ python --with-libyaml install
In order to use LibYAML based parser and emitter, use the classes CParser and CEmitter. For instance,
from yaml import load, dump try: from yaml import CLoader as Loader from yaml import CDumper as Dumper except ImportError: from yaml import Loader, Dumper # ... data = load(stream, Loader=Loader) # ... output = dump(data, Dumper=Dumper)
Note that there are some subtle (but not really significant) differences between pure Python and LibYAML based parsers and emitters.
Frequently Asked Questions
Dictionaries without nested collections are not dumped correctly
Why does
import yaml document = """ a: 1 b: c: 3 d: 4 """ print yaml.dump(yaml.load(document))
a: 1 b: {c: 3, d: 4}
It's a correct output despite the fact that the style of the nested mapping is different.
By default, PyYAML chooses the style of a collection depending on whether it has nested collections. If a collection has nested collections, it will be assigned the block style. Otherwise it will have the flow style.
If you want collections to be always serialized in the block style, set the parameter default_flow_style of dump() to False. For instance,
>>> print yaml.dump(yaml.load(document), default_flow_style=False) a: 1 b: c: 3 d: 4
Start with importing the yaml package.
>>> import yaml
Loading YAML
Warning: It is not safe to call yaml.load with any data received from an untrusted source! yaml.load is as powerful as pickle.load and so may call any Python function. Check the yaml.safe_load function though.
The function yaml.load converts a YAML document to a Python object.
>>> yaml.load(""" ... - Hesperiidae ... - Papilionidae ... - Apatelodidae ... - Epiplemidae ... """) ['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']
yaml.load accepts a string, a Unicode string, an open file object, or an open Unicode file object. A string or a file must be encoded with utf-8, utf-16-be or utf-16-le encoding. yaml.load detects the encoding by checking the BOM (byte order mark) sequence at the beginning of the string/file. If no BOM is present, the utf-8 encoding is assumed.
yaml.load returns a Python object.
>>> yaml.load(u""" ... hello: Привет! ... """) {'hello': u'\u041f\u0440\u0438\u0432\u0435\u0442!'} >>> stream = file('document.yaml', 'r') # 'document.yaml' contains a single YAML document. >>> yaml.load(stream) [...] # A Python object corresponding to the document.
If a string or a file contains several documents, you may load them all with the yaml.load_all function.
>>> documents = """ ... --- ... name: The Set of Gauntlets 'Pauraegen' ... description: > ... A set of handgear with sparks that crackle ... across its knuckleguards. ... --- ... name: The Set of Gauntlets 'Paurnen' ... description: > ... A set of gauntlets that gives off a foul, ... acrid odour yet remains untarnished. ... --- ... name: The Set of Gauntlets 'Paurnimmen' ... description: > ... A set of handgear, freezing with unnatural cold. ... """ >>> for data in yaml.load_all(documents): ... print data {'description': 'A set of handgear with sparks that crackle across its knuckleguards.\n', 'name': "The Set of Gauntlets 'Pauraegen'"} {'description': 'A set of gauntlets that gives off a foul, acrid odour yet remains untarnished.\n', 'name': "The Set of Gauntlets 'Paurnen'"} {'description': 'A set of handgear, freezing with unnatural cold.\n', 'name': "The Set of Gauntlets 'Paurnimmen'"}
PyYAML allows you to construct a Python object of any type.
>>> yaml.load(""" ... none: [~, null] ... bool: [true, false, on, off] ... int: 42 ... float: 3.14159 ... list: [LITE, RES_ACID, SUS_DEXT] ... dict: {hp: 13, sp: 5} ... """) {'none': [None, None], 'int': 42, 'float': 3.1415899999999999, 'list': ['LITE', 'RES_ACID', 'SUS_DEXT'], 'dict': {'hp': 13, 'sp': 5}, 'bool': [True, False, True, False]}
Even instances of Python classes can be constructed using the !!python/object tag.
>>> class Hero: ... def __init__(self, name, hp, sp): ... self.name = name ... self.hp = hp ... self.sp = sp ... def __repr__(self): ... return "%s(name=%r, hp=%r, sp=%r)" % ( ... self.__class__.__name__, self.name, self.hp, self.sp) >>> yaml.load(""" ... !!python/object:__main__.Hero ... name: Welthyr Syxgon ... hp: 1200 ... sp: 0 ... """) Hero(name='Welthyr Syxgon', hp=1200, sp=0)
Note that the ability to construct an arbitrary Python object may be dangerous if you receive a YAML document from an untrusted source such as Internet. The function yaml.safe_load limits this ability to simple Python objects like integers or lists.
Dumping YAML
The yaml.dump function accepts a Python object and produces a YAML document.
>>> print yaml.dump({'name': 'Silenthand Olleander', 'race': 'Human', ... 'traits': ['ONE_HAND', 'ONE_EYE']}) name: Silenthand Olleander race: Human traits: [ONE_HAND, ONE_EYE]
yaml.dump accepts the second optional argument, which must be an open file. In this case, yaml.dump will write the produced YAML document into the file. Otherwise, yaml.dump returns the produced document.
>>> stream = file('document.yaml', 'w') >>> yaml.dump(data, stream) # Write a YAML representation of data to 'document.yaml'. >>> print yaml.dump(data) # Output the document to the screen.
If you need to dump several YAML documents to a single stream, use the function yaml.dump_all. yaml.dump_all accepts a list or a generator producing Python objects to be serialized into a YAML document. The second optional argument is an open file.
>>> print yaml.dump([1,2,3], explicit_start=True) --- [1, 2, 3] >>> print yaml.dump_all([1,2,3], explicit_start=True) --- 1 --- 2 --- 3
You may even dump instances of Python classes.
>>> class Hero: ... def __init__(self, name, hp, sp): ... self.name = name ... self.hp = hp ... self.sp = sp ... def __repr__(self): ... return "%s(name=%r, hp=%r, sp=%r)" % ( ... self.__class__.__name__, self.name, self.hp, self.sp) >>> print yaml.dump(Hero("Galain Ysseleg", hp=-3, sp=2)) !!python/object:__main__.Hero {hp: -3, name: Galain Ysseleg, sp: 2}
yaml.dump supports a number of keyword arguments that specify formatting details for the emitter. For instance, you may set the preferred intendation and width, use the canonical YAML format or force preferred style for scalars and collections.
>>> print yaml.dump(range(50)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49] >>> print yaml.dump(range(50), width=50, indent=4) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49] >>> print yaml.dump(range(5), canonical=True) --- !!seq [ !!int "0", !!int "1", !!int "2", !!int "3", !!int "4", ] >>> print yaml.dump(range(5), default_flow_style=False) - 0 - 1 - 2 - 3 - 4 >>> print yaml.dump(range(5), default_flow_style=True, default_style='"') [!!int "0", !!int "1", !!int "2", !!int "3", !!int "4"]
Constructors, representers, resolvers
You may define your own application-specific tags. The easiest way to do it is to define a subclass of yaml.YAMLObject:
>>> class Monster(yaml.YAMLObject): ... yaml_tag = u'!Monster' ... def __init__(self, name, hp, ac, attacks): ... self.name = name ... self.hp = hp ... self.ac = ac ... self.attacks = attacks ... def __repr__(self): ... return "%s(name=%r, hp=%r, ac=%r, attacks=%r)" % ( ... self.__class__.__name__, self.name, self.hp, self.ac, self.attacks)
The above definition is enough to automatically load and dump Monster objects:
>>> yaml.load(""" ... --- !Monster ... name: Cave spider ... hp: [2,6] # 2d6 ... ac: 16 ... attacks: [BITE, HURT] ... """) Monster(name='Cave spider', hp=[2, 6], ac=16, attacks=['BITE', 'HURT']) >>> print yaml.dump(Monster( ... name='Cave lizard', hp=[3,6], ac=16, attacks=['BITE','HURT'])) !Monster ac: 16 attacks: [BITE, HURT] hp: [3, 6] name: Cave lizard
yaml.YAMLObject uses metaclass magic to register a constructor, which transforms a YAML node to a class instance, and a representer, which serializes a class instance to a YAML node.
If you don't want to use metaclasses, you may register your constructors and representers using the functions yaml.add_constructor and yaml.add_representer. For instance, you may want to add a constructor and a representer for the following Dice class:
>>> class Dice(tuple): ... def __new__(cls, a, b): ... return tuple.__new__(cls, [a, b]) ... def __repr__(self): ... return "Dice(%s,%s)" % self >>> print Dice(3,6) Dice(3,6)
The default representation for Dice objects is not nice:
>>> print yaml.dump(Dice(3,6)) !!python/object/new:__main__.Dice - !!python/tuple [3, 6]
Suppose you want a Dice object to represented as AdB in YAML:
>>> print yaml.dump(Dice(3,6)) 3d6
First we define a representer that convert a dice object to scalar node with the tag !dice and register it.
>>> def dice_representer(dumper, data): ... return dumper.represent_scalar(u'!dice', u'%sd%s' % data) >>> yaml.add_representer(Dice, dice_representer)
Now you may dump an instance of the Dice object:
>>> print yaml.dump({'gold': Dice(10,6)}) {gold: !dice '10d6'}
Let us add the code to construct a Dice object:
>>> def dice_constructor(loader, node): ... value = loader.construct_scalar(node) ... a, b = map(int, value.split('d')) ... return Dice(a, b) >>> yaml.add_constructor(u'!dice', dice_constructor)
Then you may load a Dice object as well:
>>> print yaml.load(""" ... initial hit points: !dice 8d4 ... """) {'initial hit points': Dice(8,4)}
You might want to not specify the tag !dice everywhere. There is a way to teach PyYAML that any untagged plain scalar that looks like XdY has the implicit tag !dice. Use add_implicit_resolver:
>>> import re >>> pattern = re.compile(r'^\d+d\d+$') >>> yaml.add_implicit_resolver(u'!dice', pattern)
Now you don't have to specify the tag to define a Dice object:
>>> print yaml.dump({'treasure': Dice(10,20)}) {treasure: 10d20} >>> print yaml.load(""" ... damage: 5d10 ... """) {'damage': Dice(5,10)}
YAML syntax
A good introduction to the YAML syntax is Chapter 2 of the YAML specification.
You may also check the YAML cookbook. Note that it is focused on a Ruby implementation and uses the old YAML 1.0 syntax.
Here we present most common YAML constructs together with the corresponding Python objects.
YAML stream is a collection of zero or more documents. An empty stream contains no documents. Documents are separated with ---. Documents may optionally end with .... A single document may or may not be marked with ---.
Example of an implicit document:
- Multimedia - Internet - Education
Example of an explicit document:
--- - Afterstep - CTWM - Oroborus ...
Example of several documents in the same stream:
--- - Ada - APL - ASP - Assembly - Awk --- - Basic --- - C - C# # Note that comments are denoted with ' #' (space and #). - C++ - Cold Fusion
Block sequences
In the block context, sequence entries are denoted by - (dash and space):
# YAML - The Dagger 'Narthanc' - The Dagger 'Nimthanc' - The Dagger 'Dethanc'
# Python ["The Dagger 'Narthanc'", "The Dagger 'Nimthanc'", "The Dagger 'Dethanc'"]
Block sequences can be nested:
# YAML - - HTML - LaTeX - SGML - VRML - XML - YAML - - BSD - GNU Hurd - Linux
# Python [['HTML', 'LaTeX', 'SGML', 'VRML', 'XML', 'YAML'], ['BSD', 'GNU Hurd', 'Linux']]
It's not necessary to start a nested sequence with a new line:
# Python [1.1, [2.1, 2.2], [[3.1, 3.2, 3.3]]]
A block sequence may be nested to a block mapping. Note that in this case it is not necessary to indent the sequence.
# YAML left hand: - Ring of Teleportation - Ring of Speed right hand: - Ring of Resist Fire - Ring of Resist Cold - Ring of Resist Poison
# Python {'right hand': ['Ring of Resist Fire', 'Ring of Resist Cold', 'Ring of Resist Poison'], 'left hand': ['Ring of Teleportation', 'Ring of Speed']}
Block mappings
In the block context, keys and values of mappings are separated by : (colon and space):
# YAML base armor class: 0 base damage: [4,4] plus to-hit: 12 plus to-dam: 16 plus to-ac: 0
# Python {'plus to-hit': 12, 'base damage': [4, 4], 'base armor class': 0, 'plus to-ac': 0, 'plus to-dam': 16}
Complex keys are denoted with ? (question mark and space):
# YAML ? !!python/tuple [0,0] : The Hero ? !!python/tuple [0,1] : Treasure ? !!python/tuple [1,0] : Treasure ? !!python/tuple [1,1] : The Dragon
# Python {(0, 1): 'Treasure', (1, 0): 'Treasure', (0, 0): 'The Hero', (1, 1): 'The Dragon'}
Block mapping can be nested:
# YAML hero: hp: 34 sp: 8 level: 4 orc: hp: 12 sp: 0 level: 2
# Python {'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}
A block mapping may be nested in a block sequence:
# YAML - name: PyYAML status: 4 license: MIT language: Python - name: PySyck status: 5 license: BSD language: Python
# Python [{'status': 4, 'language': 'Python', 'name': 'PyYAML', 'license': 'MIT'}, {'status': 5, 'license': 'BSD', 'name': 'PySyck', 'language': 'Python'}]
Flow collections
The syntax of flow collections in YAML is very close to the syntax of list and dictionary constructors in Python:
# YAML { str: [15, 17], con: [16, 16], dex: [17, 18], wis: [16, 16], int: [10, 13], chr: [5, 8] }
# Python {'dex': [17, 18], 'int': [10, 13], 'chr': [5, 8], 'wis': [16, 16], 'str': [15, 17], 'con': [16, 16]}
There are 5 styles of scalars in YAML: plain, single-quoted, double-quoted, literal, and folded:
# YAML plain: Scroll of Remove Curse single-quoted: 'EASY_KNOW' double-quoted: "?" literal: | # Borrowed from http://www.kersbergen.com/flump/religion.html by hjw ___ __ /.-.\ / )_____________\\ Y /_ /=== == === === =\ _\_ ( /)=== == === === == Y \ `-------------------( o ) \___/ folded: > It removes all ordinary curses from all equipped items. Heavy or permanent curses are unaffected.
# Python {'plain': 'Scroll of Remove Curse', 'literal': 'by hjw ___\n' ' __ /.-.\\\n' ' / )_____________\\\\ Y\n' ' /_ /=== == === === =\\ _\\_\n' '( /)=== == === === == Y \\\n' ' `-------------------( o )\n' ' \\___/\n', 'single-quoted': 'EASY_KNOW', 'double-quoted': '?', 'folded': 'It removes all ordinary curses from all equipped items. Heavy or permanent curses are unaffected.\n'}
Each style has its own quirks. A plain scalar does not use indicators to denote its start and end, therefore it's the most restricted style. Its natural applications are names of attributes and parameters.
Using single-quoted scalars, you may express any value that does not contain special characters. No escaping occurs for single quoted scalars except that duplicate quotes '' are replaced with a single quote '.
Double-quoted is the most powerful style and the only style that can express any scalar value. Double-quoted scalars allow escaping. Using escaping sequences \x** and \u****, you may express any ASCII or Unicode character.
There are two kind of block scalar styles: literal and folded. The literal style is the most suitable style for large block of text such as source code. The folded style is similar to the literal style, but two consequent non-empty lines are joined to a single line separated by a space character.
Note that PyYAML does not yet support recursive objects.
Using YAML you may represent objects of arbitrary graph-like structures. If you want to refer to the same object from different parts of a document, you need to use anchors and aliases.
Anchors are denoted by the & indicator while aliases are denoted by *. For instance, the document
left hand: &A name: The Bastard Sword of Eowyn weight: 30 right hand: *A
expresses the idea of a hero holding a heavy sword in both hands.
PyYAML now fully supports recursive objects. For instance, the document
will produce a list object containing a reference to itself.
Tags are used to denote the type of a YAML node. Standard YAML tags are defined at http://yaml.org/type/index.html.
Tags may be implicit:
boolean: true integer: 3 float: 3.14
{'boolean': True, 'integer': 3, 'float': 3.14}
or explicit:
boolean: !!bool "true" integer: !!int "3" float: !!float "3.14"
{'boolean': True, 'integer': 3, 'float': 3.14}
Plain scalars without explicitly defined tag are subject to implicit tag resolution. The scalar value is checked against a set of regular expressions and if one of them matches, the corresponding tag is assigned to the scalar. PyYAML allows an application to add custom implicit tag resolvers.
YAML tags and Python types
The following table describes how nodes with different tags are converted to Python objects.
|YAML tag
|Python type
|Standard YAML tags
|int or long
|!!omap, !!pairs
|list of pairs
|str or unicode
|Python-specific tags
|Complex Python tags
|module.cls instance
|module.cls instance
|value of f(...)
String conversion
There are four tags that are converted to str and unicode values: !!str, !!binary, !!python/str, and !!python/unicode.
!!str-tagged scalars are converted to str objects if its value is ASCII. Otherwise it is converted to unicode. !!binary-tagged scalars are converted to str objects with its value decoded using the base64 encoding. !!python/str scalars are converted to str objects encoded with utf-8 encoding. !!python/unicode scalars are converted to unicode objects.
Conversely, a str object is converted to
- a !!str scalar if its value is ASCII.
- a !!python/str scalar if its value is a correct utf-8 sequence.
- a !!binary scalar otherwise.
A unicode object is converted to
- a !!python/unicode scalar if its value is ASCII.
- a !!str scalar otherwise.
Names and modules
In order to represent static Python objects like functions or classes, you need to use a complex !!python/name tag. For instance, the function yaml.dump can be represented as
Similarly, modules are represented using the tag !python/module:
Any pickleable object can be serialized using the !!python/object tag:
!!python/object:module.Class { attribute: value, ... }
In order to support the pickle protocol, two additional forms of the !!python/object tag are provided:
!!python/object/new:module.Class args: [argument, ...] kwds: {key: value, ...} state: ... listitems: [item, ...] dictitems: [key: value, ...]
!!python/object/apply:module.function args: [argument, ...] kwds: {key: value, ...} state: ... listitems: [item, ...] dictitems: [key: value, ...]
If only the args field is non-empty, the above records can be shortened:
!!python/object/new:module.Class [argument, ...]
!!python/object/apply:module.function [argument, ...]
Warning: API stability is not guaranteed'''
The yaml package
scan(stream, Loader=Loader)
scan(stream) scans the given stream and produces a sequence of tokens.
parse(stream, Loader=Loader) emit(events, stream=None, Dumper=Dumper, canonical=None, indent=None, width=None, allow_unicode=None, line_break=None)
parse(stream) parses the given stream and produces a sequence of parsing events.
emit(events, stream=None) serializes the given sequence of parsing events and write them to the stream. if stream is None, it returns the produced stream.
compose(stream, Loader=Loader) compose_all(stream, Loader=Loader) serialize(node, stream=None, Dumper=Dumper, encoding='utf-8', explicit_start=None, explicit_end=None, version=None, tags=None, canonical=None, indent=None, width=None, allow_unicode=None, line_break=None) serialize_all(nodes, stream=None, Dumper=Dumper, ...)
compose(stream) parses the given stream and returns the root of the representation graph for the first document in the stream. If there are no documents in the stream, it returns None.
compose_all(stream) parses the given stream and returns a sequence of representation graphs corresponding to the documents in the stream.
serialize(node, stream=None) serializes the given representation graph into the stream. If stream is None, it returns the produced stream.
serialize_all(node, stream=None) serializes the given sequence of representation graphs into the given stream. If stream is None, it returns the produced stream.
load(stream, Loader=Loader) load_all(stream, Loader=Loader) safe_load(stream) safe_load_all(stream) dump(data, stream=None, Dumper=Dumper, default_style=None, default_flow_style=None, encoding='utf-8', explicit_start=None, explicit_end=None, version=None, tags=None, canonical=None, indent=None, width=None, allow_unicode=None, line_break=None) dump_all(data, stream=None, Dumper=Dumper, ...) safe_dump(data, stream=None, ...) safe_dump_all(data, stream=None, ...)
load(stream) parses the given stream and returns a Python object constructed from for the first document in the stream. If there are no documents in the stream, it returns None.
load_all(stream) parses the given stream and returns a sequence of Python objects corresponding to the documents in the stream.
safe_load(stream) parses the given stream and returns a Python object constructed from for the first document in the stream. If there are no documents in the stream, it returns None. safe_load recognizes only standard YAML tags and cannot construct an arbitrary Python object.
safe_load_all(stream) parses the given stream and returns a sequence of Python objects corresponding to the documents in the stream. safe_load_all recognizes only standard YAML tags and cannot construct an arbitrary Python object.
dump(data, stream=None) serializes the given Python object into the stream. If stream is None, it returns the produced stream.
dump_all(data, stream=None) serializes the given sequence of Python objects into the given stream. If stream is None, it returns the produced stream. Each object is represented as a YAML document.
safe_dump(data, stream=None) serializes the given Python object into the stream. If stream is None, it returns the produced stream. safe_dump produces only standard YAML tags and cannot represent an arbitrary Python object.
safe_dump_all(data, stream=None) serializes the given sequence of Python objects into the given stream. If stream is None, it returns the produced stream. Each object is represented as a YAML document. safe_dump_all produces only standard YAML tags and cannot represent an arbitrary Python object.
def constructor(loader, node): # ... return data def multi_constructor(loader, tag_suffix, node): # ... return data add_constructor(tag, constructor, Loader=Loader) add_multi_constructor(tag_prefix, multi_constructor, Loader=Loader)
add_constructor(tag, constructor) allows to specify a constructor for the given tag. A constructor is a function that converts a node of a YAML representation graph to a native Python object. A constructor accepts an instance of Loader and a node and returns a Python object.
add_multi_constructor(tag_prefix, multi_constructor) allows to specify a multi_constructor for the given tag_prefix. A multi-constructor is a function that converts a node of a YAML representation graph to a native Python object. A multi-constructor accepts an instance of Loader, the suffix of the node tag, and a node and returns a Python object.
def representer(dumper, data): # ... return node def multi_representer(dumper, data): # ... return node add_representer(data_type, representer, Dumper=Dumper) add_multi_representer(base_data_type, multi_representer, Dumper=Dumper)
add_representer(data_type, representer) allows to specify a representer for Python objects of the given data_type. A representer is a function that converts a native Python object to a node of a YAML representation graph. A representer accepts an instance of Dumper and an object and returns a node.
add_multi_representer(base_data_type, multi_representer) allows to specify a multi_representer for Python objects of the given base_data_type or any of its subclasses. A multi-representer is a function that converts a native Python object to a node of a YAML representation graph. A multi-representer accepts an instance of Dumper and an object and returns a node.
add_implicit_resolver(tag, regexp, first, Loader=Loader, Dumper=Dumper) add_path_resolver(tag, path, kind, Loader=Loader, Dumper=Dumper)
add_implicit_resolver(tag, regexp, first) adds an implicit tag resolver for plain scalars. If the scalar value is matched the given regexp, it is assigned the tag. first is a list of possible initial characters or None.
add_path_resolver(tag, path, kind) adds a path-based implicit tag resolver. A path is a list of keys that form a path to a node in the representation graph. Paths elements can be string values, integers, or None. The kind of a node can be str, list, dict, or None.
Mark(name, index, line, column, buffer, pointer)
An instance of Mark points to a certain position in the input stream. name is the name of the stream, for instance it may be the filename if the input stream is a file. line and column is the line and column of the position (starting from 0). buffer, when it is not None, is a part of the input stream that contain the position and pointer refers to the position in the buffer.
If the YAML parser encounters an error condition, it raises an exception which is an instance of YAMLError or of its subclass. An application may catch this exception and warn a user.
try: config = yaml.load(file('config.yaml', 'r')) except yaml.YAMLError, exc: print "Error in configuration file:", exc
An exception produced by the YAML processor may point to the problematic position.
>>> try: ... yaml.load("unbalanced blackets: ][") ... except yaml.YAMLError, exc: ... if hasattr(exc, 'problem_mark'): ... mark = exc.problem_mark ... print "Error position: (%s:%s)" % (mark.line+1, mark.column+1) Error position: (1:22)
Tokens are produced by a YAML scanner. They are not really useful except for low-level YAML applications such as syntax highlighting.
The PyYAML scanner produces the following types of tokens:
StreamStartToken(encoding, start_mark, end_mark) # Start of the stream. StreamEndToken(start_mark, end_mark) # End of the stream. DirectiveToken(name, value, start_mark, end_mark) # YAML directive, either %YAML or %TAG. DocumentStartToken(start_mark, end_mark) # '---'. DocumentEndToken(start_mark, end_mark) # '...'. BlockSequenceStartToken(start_mark, end_mark) # Start of a new block sequence. BlockMappingStartToken(start_mark, end_mark) # Start of a new block mapping. BlockEndToken(start_mark, end_mark) # End of a block collection. FlowSequenceStartToken(start_mark, end_mark) # '['. FlowMappingStartToken(start_mark, end_mark) # '{'. FlowSequenceEndToken(start_mark, end_mark) # ']'. FlowMappingEndToken(start_mark, end_mark) # '}'. KeyToken(start_mark, end_mark) # Either '?' or start of a simple key. ValueToken(start_mark, end_mark) # ':'. BlockEntryToken(start_mark, end_mark) # '-'. FlowEntryToken(start_mark, end_mark) # ','. AliasToken(value, start_mark, end_mark) # '*value'. AnchorToken(value, start_mark, end_mark) # '&value'. TagToken(value, start_mark, end_mark) # '!value'. ScalarToken(value, plain, style, start_mark, end_mark) # 'value'.
start_mark and end_mark denote the beginning and the and of a token.
>>> document = """ ... --- ... block sequence: ... - BlockEntryToken ... block mapping: ... ? KeyToken ... : ValueToken ... flow sequence: [FlowEntryToken, FlowEntryToken] ... flow mapping: {KeyToken: ValueToken} ... anchors and tags: ... - &A !!int '5' ... - *A ... ... ... """ >>> for token in yaml.scan(document): ... print token StreamStartToken(encoding='utf-8') DocumentStartToken() BlockMappingStartToken() KeyToken() ScalarToken(plain=True, style=None, value=u'block sequence') ValueToken() BlockEntryToken() ScalarToken(plain=True, style=None, value=u'BlockEntryToken') KeyToken() ScalarToken(plain=True, style=None, value=u'block mapping') ValueToken() BlockMappingStartToken() KeyToken() ScalarToken(plain=True, style=None, value=u'KeyToken') ValueToken() ScalarToken(plain=True, style=None, value=u'ValueToken') BlockEndToken() KeyToken() ScalarToken(plain=True, style=None, value=u'flow sequence') ValueToken() FlowSequenceStartToken() ScalarToken(plain=True, style=None, value=u'FlowEntryToken') FlowEntryToken() ScalarToken(plain=True, style=None, value=u'FlowEntryToken') FlowSequenceEndToken() KeyToken() ScalarToken(plain=True, style=None, value=u'flow mapping') ValueToken() FlowMappingStartToken() KeyToken() ScalarToken(plain=True, style=None, value=u'KeyToken') ValueToken() ScalarToken(plain=True, style=None, value=u'ValueToken') FlowMappingEndToken() KeyToken() ScalarToken(plain=True, style=None, value=u'anchors and tags') ValueToken() BlockEntryToken() AnchorToken(value=u'A') TagToken(value=(u'!!', u'int')) ScalarToken(plain=False, style="'", value=u'5') BlockEntryToken() AliasToken(value=u'A') BlockEndToken() DocumentEndToken() StreamEndToken()
Events are used by the low-level Parser and Emitter interfaces, which are similar to the SAX API. While the Parser parses a YAML stream and produces a sequence of events, the Emitter accepts a sequence of events and emits a YAML stream.
The following events are defined:
StreamStartEvent(encoding, start_mark, end_mark) StreamEndEvent(start_mark, end_mark) DocumentStartEvent(explicit, version, tags, start_mark, end_mark) DocumentEndEvent(start_mark, end_mark) SequenceStartEvent(anchor, tag, implicit, flow_style, start_mark, end_mark) SequenceEndEvent(start_mark, end_mark) MappingStartEvent(anchor, tag, implicit, flow_style, start_mark, end_mark) MappingEndEvent(start_mark, end_mark) AliasEvent(anchor, start_mark, end_mark) ScalarEvent(anchor, tag, implicit, value, style, start_mark, end_mark)
The flow_style flag indicates if a collection is block or flow. The possible values are None, True, False. The style flag of a scalar event indicates the style of the scalar. Possible values are None, '', '\'', '"', '|', '>'. The implicit flag of a collection start event indicates if the tag may be omitted when the collection is emitted. The implicit flag of a scalar event is a pair of boolean values that indicate if the tag may be omitted when the scalar is emitted in a plain and non-plain style correspondingly.
>>> document = """ ... scalar: &A !!int '5' ... alias: *A ... sequence: [1, 2, 3] ... mapping: [1: one, 2: two, 3: three] ... """ >>> for event in yaml.parse(document): ... print event StreamStartEvent() DocumentStartEvent() MappingStartEvent(anchor=None, tag=None, implicit=True) ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'scalar') ScalarEvent(anchor=u'A', tag=u'tag:yaml.org,2002:int', implicit=(False, False), value=u'5') ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'alias') AliasEvent(anchor=u'A') ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'sequence') SequenceStartEvent(anchor=None, tag=None, implicit=True) ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'1') ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'2') ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'3') SequenceEndEvent() ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'mapping') MappingStartEvent(anchor=None, tag=None, implicit=True) ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'1') ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'one') ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'2') ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'two') ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'3') ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'three') MappingEndEvent() MappingEndEvent() DocumentEndEvent() StreamEndEvent() >>> print yaml.emit([ ... yaml.StreamStartEvent(encoding='utf-8'), ... yaml.DocumentStartEvent(explicit=True), ... yaml.MappingStartEvent(anchor=None, tag=u'tag:yaml.org,2002:map', implicit=True, flow_style=False), ... yaml.ScalarEvent(anchor=None, tag=u'tag:yaml.org,2002:str', implicit=(True, True), value=u'agile languages'), ... yaml.SequenceStartEvent(anchor=None, tag=u'tag:yaml.org,2002:seq', implicit=True, flow_style=True), ... yaml.ScalarEvent(anchor=None, tag=u'tag:yaml.org,2002:str', implicit=(True, True), value=u'Python'), ... yaml.ScalarEvent(anchor=None, tag=u'tag:yaml.org,2002:str', implicit=(True, True), value=u'Perl'), ... yaml.ScalarEvent(anchor=None, tag=u'tag:yaml.org,2002:str', implicit=(True, True), value=u'Ruby'), ... yaml.SequenceEndEvent(), ... yaml.MappingEndEvent(), ... yaml.DocumentEndEvent(explicit=True), ... yaml.StreamEndEvent(), ... ]) --- agile languages: [Python, Perl, Ruby] ...
Nodes are entities in the YAML informational model. There are three kinds of nodes: scalar, sequence, and mapping. In PyYAML, nodes are produced by Composer and can be serialized to a YAML stream by Serializer.
ScalarNode(tag, value, style, start_mark, end_mark) SequenceNode(tag, value, flow_style, start_mark, end_mark) MappingNode(tag, value, flow_style, start_mark, end_mark)
The style and flow_style flags have the same meaning as for events. The value of a scalar node must be a unicode string. The value of a sequence node is a list of nodes. The value of a mapping node is a dictionary which keys and values are nodes.
>>> print yaml.compose(""" ... kinds: ... - scalar ... - sequence ... - mapping ... """) MappingNode(tag=u'tag:yaml.org,2002:map', value={ ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'kinds'): SequenceNode(tag=u'tag:yaml.org,2002:seq', value=[ ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'scalar'), ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'sequence'), ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'mapping')])}) >>> print yaml.serialize(yaml.SequenceNode(tag=u'tag:yaml.org,2002:seq', value=[ ... yaml.ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'scalar'), ... yaml.ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'sequence'), ... yaml.ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'mapping')])) - scalar - sequence - mapping
Loader(stream) SafeLoader(stream) BaseLoader(stream) # The following classes are available only if you build LibYAML bindings. CLoader(stream) CSafeLoader(stream) CBaseLoader(stream)
Loader(stream) is the most common of the above classes and should be used in most cases. stream is an input YAML stream. It can be a string, a Unicode string, an open file, an open Unicode file.
Loader supports all predefined tags and may construct an arbitrary Python object. Therefore it is not safe to use Loader to load a document received from an untrusted source. By default, the functions scan, parse, compose, construct, and others use Loader.
SafeLoader(stream) supports only standard YAML tags and thus it does not construct class instances and probably safe to use with documents received from an untrusted source. The functions safe_load and safe_load_all use SafeLoader to parse a stream.
BaseLoader(stream) does not resolve or support any tags and construct only basic Python objects: lists, dictionaries and Unicode strings.
CLoader, CSafeLoader, CBaseLoader are versions of the above classes written in C using the LibYAML library.
Loader.check_token(*TokenClasses) Loader.peek_token() Loader.get_token()
Loader.check_token(*TokenClasses) returns True if the next token in the stream is an instance of one of the given TokenClasses. Otherwise it returns False.
Loader.peek_token() returns the next token in the stream, but does not remove it from the internal token queue. The function returns None at the end of the stream.
Loader.get_token() returns the next token in the stream and removes it from the internal token queue. The function returns None at the end of the stream.
Loader.check_event(*EventClasses) Loader.peek_event() Loader.get_event()
Loader.check_event(*EventClasses) returns True if the next event in the stream is an instance of one of the given EventClasses. Otherwise it returns False.
Loader.peek_event() returns the next event in the stream, but does not remove it from the internal event queue. The function returns None at the end of the stream.
Loader.get_event() returns the next event in the stream and removes it from the internal event queue. The function returns None at the end of the stream.
Loader.check_node() Loader.get_node()
Loader.check_node() returns True is there are more documents available in the stream. Otherwise it returns False.
Loader.get_node() construct the representation graph of the next document in the stream and returns its root node.
Loader.check_data() Loader.get_data() Loader.add_constructor(tag, constructor) # Loader.add_constructor is a class method. Loader.add_multi_constructor(tag_prefix, multi_constructor) # Loader.add_multi_constructor is a class method. Loader.construct_scalar(node) Loader.construct_sequence(node) Loader.construct_mapping(node)
Loader.check_data() returns True is there are more documents available in the stream. Otherwise it returns False.
Loader.get_data() constructs and returns a Python object corresponding to the next document in the stream.
Loader.add_constructor(tag, constructor): see add_constructor.
Loader.add_multi_constructor(tag_prefix, multi_constructor): see add_multi_constructor.
Loader.construct_scalar(node) checks that the given node is a scalar and returns its value. This function is intended to be used in constructors.
Loader.construct_sequence(node) checks that the given node is a sequence and returns a list of Python objects corresponding to the node items. This function is intended to be used in constructors.
Loader.construct_mapping(node) checks that the given node is a mapping and returns a dictionary of Python objects corresponding to the node keys and values. This function is intended to be used in constructors.
Loader.add_implicit_resolver(tag, regexp, first) # Loader.add_implicit_resolver is a class method. Loader.add_path_resolver(tag, path, kind) # Loader.add_path_resolver is a class method.
Loader.add_implicit_resolver(tag, regexp, first): see add_implicit_resolver.
Loader.add_path_resolver(tag, path, kind): see add_path_resolver.
Dumper(stream, default_style=None, default_flow_style=None, canonical=None, indent=None, width=None, allow_unicode=None, line_break=None, encoding=None, explicit_start=None, explicit_end=None, version=None, tags=None) SafeDumper(stream, ...) BaseDumper(stream, ...) # The following classes are available only if you build LibYAML bindings. CDumper(stream, ...) CSafeDumper(stream, ...) CBaseDumper(stream, ...)
Dumper(stream) is the most common of the above classes and should be used in most cases. stream is an output YAML stream. It can be an open file or an open Unicode file.
Dumper supports all predefined tags and may represent an arbitrary Python object. Therefore it may produce a document that cannot be loaded by other YAML processors. By default, the functions emit, serialize, dump, and others use Dumper.
SafeDumper(stream) produces only standard YAML tags and thus cannot represent class instances and probably more compatible with other YAML processors. The functions safe_dump and safe_dump_all use SafeDumper to produce a YAML document.
BaseDumper(stream) does not support any tags and is useful only for subclassing.
CDumper, CSafeDumper, CBaseDumper are versions of the above classes written in C using the LibYAML library.
Dumper.emit(event) serializes the given event and write it to the output stream.
Dumper.open() Dumper.serialize(node) Dumper.close()
Dumper.open() emits StreamStartEvent.
Dumper.serialize(node) serializes the given representation graph into the output stream.
Dumper.close() emits StreamEndEvent.
Dumper.represent(data) Dumper.add_representer(data_type, representer) # Dumper.add_representer is a class method. Dumper.add_multi_representer(base_data_type, multi_representer) # Dumper.add_multi_representer is a class method. Dumper.represent_scalar(tag, value, style=None) Dumper.represent_sequence(tag, value, flow_style=None) Dumper.represent_mapping(tag, value, flow_style=None)
Dumper.represent(data) serializes the given Python object to the output YAML stream.
Dumper.add_representer(data_type, representer): see add_representer.
Dumper.add_multi_representer(base_data_type, multi_representer): see add_multi_representer.
Dumper.represent_scalar(tag, value, style=None) returns a scalar node with the given tag, value, and style. This function is intended to be used in representers.
Dumper.represent_sequence(tag, sequence, flow_style=None) return a sequence node with the given tag and subnodes generated from the items of the given sequence.
Dumper.represent_mapping(tag, mapping, flow_style=None) return a mapping node with the given tag and subnodes generated from the keys and values of the given mapping.
Dumper.add_implicit_resolver(tag, regexp, first) # Dumper.add_implicit_resolver is a class method. Dumper.add_path_resolver(tag, path, kind) # Dumper.add_path_resolver is a class method.
Dumper.add_implicit_resolver(tag, regexp, first): see add_implicit_resolver.
Dumper.add_path_resolver(tag, path, kind): see add_path_resolver.
class MyYAMLObject(YAMLObject): yaml_loader = Loader yaml_dumper = Dumper yaml_tag = u'...' yaml_flow_style = ... @classmethod def from_yaml(cls, loader, node): # ... return data @classmethod def to_yaml(cls, dumper, data): # ... return node
Subclassing YAMLObject is an easy way to define tags, constructors, and representers for your classes. You only need to override the yaml_tag attribute. If you want to define your custom constructor and representer, redefine the from_yaml and to_yaml method correspondingly.
Deviations from the specification
need to update this section
- rules for tabs in YAML are confusing. We are close, but not there yet. Perhaps both the spec and the parser should be fixed. Anyway, the best rule for tabs in YAML is to not use them at all.
- Byte order mark. The initial BOM is stripped, but BOMs inside the stream are considered as parts of the content. It can be fixed, but it's not really important now.
Empty plain scalars are not allowed if alias or tag is specified.This is done to prevent anomalities like [ !tag, value], which can be interpreted both as [ !<!tag,> value ] and [ !<!tag> "", "value" ]. The spec should be fixed.
- Indentation of flow collections. The spec requires them to be indented
more than their block parent node. Unfortunately this rule renders many intuitively
correct constructs invalid, for instance,
block: { } # this is indentation violation according to the spec.
- ':' is not allowed for plain scalars in the flow mode.
~{1:2} is interpreted as { 1 : 2 }.~
To do and long-term goals:
fix recursive objects,refactor Emitter, tabs, indentation for flow collections, indentation for scalars (min=1?), 'y' is !!bool, libyaml3000 (my SoC proposal).


text:
There's a bull's-eye painted on supersized servings of soda and sugary drinks in New York City, and Mayor Michael Bloomberg is using them for target practice. In his latest health-directed proposal, restaurants, movie theaters, food carts and ball parks would be banned from selling soda and other sweetened beverages in containers larger than 16 ounces, according to this MSNBC report.
While Bloomberg's proposal may have ruffled feathers among the soda-drinking communities of the city, dairy lovers can rest assured that milk products will be excempt from the proposal. CBS Local reports that the ban wouldn't apply to beverages with at least percent 50 milk.
Other beverages exempt from the supersized limitation include water, diet soda, coffee, alcohol and drinks with at least 70 percent juice.
Though hotly debated, the proposal is likely to be approved by the city's Board of Health. Once approved, it could take effect as early as March 2013.
The proposal is Bloomberg's latest quest to improve the health of his city, including city-wide smoking bans and requiring fast-food restaurants to highlight calorie information on menu boards. On the TODAY Show, Bloomberg said that the city has reduced the rate of childhood obesity by 5 percent in recent years. The city's life expectancy is now three years greater than the national average.
Milk hasn't always been exempt from New York City's battle with obesity. In 2006, the city's education officials eliminated whole milk from cafeterias in their school district as reported by The New York Times. Just two years ago, education officials also targeted chocolate milk in school cafeterias. Previous attempts to ban chocolate milk in other school districts failed as milk consumption dropped by as much as 75 percent. Read more.
ABC News recently covered the weight-loss advantages of dairy, including a University of Tennessee study that showed the benefits of eating dairy products.
"Eating three servings of dairy daily significantly reduced body fat in obese subjects," the ABC News report said. "If they restricted calories a bit while continuing with the same dairy servings, it accelerated fat and weight loss."
Sound off: If banning supersized portions of soda and sugary drinks wouldn't curb obesity, what do you think would help?

subset: commoncrawl


text:
TPWD Print-Friendly Page: http://tpwd.texas.gov/newsmedia/releases/print.phtml?req=20110418aMedia Contact: TPWD News, firstname.lastname@example.com, 512-389-8030 [LH]
TPWD Website: http://tpwd.texas.gov
TPWD News Release — April 18, 2011
ATHENS—The annual Cinco de Mayo celebration at the Texas Freshwater Fisheries Center will take place from 9:00 a.m. to 4:00 p.m. May 7.
The event will feature performances of traditional Mexican dances in the Hart-Morris Conservation Center beginning at noon. Athens area elementary students will perform at noon followed by Tyler Ballet Folklorico at 1:00 p.m. and the children's Tyler Ballet Folklorico at 3:00 p.m.
Athens area restaurants will compete in a salsa contest, which will be judged at 2:00 p.m. Visitors will be able to sample the entries as well.
The Blackland Prairie Raptor Center will do walk-around displays of birds including owls and hawks throughout the day. Visitors will be able to see the birds at close range and learn about their abilities and habits.
Food vendors will include El San Luis Restaurant, Ted Kamel Foods and Crazy Crawcajun among others.
In contrast to prior years, there will be no evening activities.
Cinco de Mayo is a celebration of the joint heritage and history of Texas and Mexico. It honors an important victory of the Mexican army, led by Texas native Ignacio Zaragoza, over French forces at the Battle of Puebla on May 5, 1862. The victory helped preserve Mexican independence.
More information on Zaragoza can be found at http://en.wikipedia.org/wiki/Ignacio_Zaragoza.
Sponsors of the event include Citizens National Bank, Red Hat Rentals, FutureMatrix, Inc., East Texas Medical Center, Schneider Electric, KCKL, Athens Chamber of Commerce, Aaron's Sales and Lease, First State Bank, Lilly Enterprises—McDonalds, and Texas Trust Credit Union. The Athens Key Club will decorate the Hart-Morris Conservation Center for the event.
For more information on the event contact James Booker at (903) 670-2266, firstname.lastname@example.com. Se habla español.
For information on the Texas Freshwater Fisheries Center, call (903) 676-2277 or visit http://tpwd.texas.gov/tffc.


text:
So...I'm trying to throw Rocs and I currently throw a Champ Rancho & Star Ontario....and I love them. Now, I'm looking for the turnover slot. Champ flies overstable, Ontario is straight with slight fade and I'm trying to break in a DX Rancho but it's taking forever.
Is a Beat DX Roc basically the same thing as a Star Stingray? I used to throw the Star Stingray and am thinking about putting it back in the bag because this seasoning process is taking so long. I'm also kind of concerned about this DX Roc taking a big hit and getting chunked up and flying differently...which I never had to worry about with the Star Stingray. So, basically my question is should I stick with beating up a DX Rancho (or KC?) or put the Stingray back in the bag. Is the Stingray basically a beadless Roc? I'm also trying to reduce my mid molds and if there's a disc I can drop it's the Stingray in the place of a Beat Roc.


text:
Css Rollovers In Ie6
Posted 25 February 2008 - 07:54 AM
I'm having an awesome time making my roll overs work in ie6- they're fine in every other stinking browser- its just good ol ie. Point your copy of this horrifically produced poiece of software over to http://www1devalt.lbsltd.co.uk/ and have a butchers at the top 4 buttons "First books", "Girls Books" etc. Notice, on mouse out, the image sometimes restores to the correct image, but other times shows a totally random chunk of the browser in that space.
Any ideas at all would be greatly appreciated as i'm at a total loss!
Cheers all,
Posted 25 February 2008 - 08:00 AM

Posted 25 February 2008 - 09:10 AM
Posted 25 February 2008 - 09:48 AM
#5 Guest_Autocrat_*
Posted 25 February 2008 - 01:21 PM

   First Books

   Girls Books

   Boys Books

   Older Readers

#navmenu {width: 100%; float: left;} #navmenu ul { margin: 0; padding: 0; list-style: none; float:left; clear: left; width: 572px; } #navmenu li { margin: 0; padding: 0; float: left; } #navmenu li a { position: relative; display: block; width: 143px; text-decoration: underline; height: 105px; } #navmenu li a:hover { text-decoration: none; font-size: 100%; } #navmenu a span { position: absolute; top: 0; left: 0; display: block; } #navmenu a:hover span {cursor: hand;} #navmenu a span#firstlinkbgimg {width: 143px; height: 105px; background-color: blue;} #navmenu a span#firstlinkfgimg {width: 143px; height: 105px; background-color: green;} #navmenu a:hover span#firstlinkfgimg {width: 0; height: 143px;} #navmenu a span#secondlinkbgimg {width: 145px; height: 105px; background-color: yellow;} #navmenu a span#secondlinkfgimg {width: 145px; height: 105px; background-color: orange;} #navmenu a:hover span#secondlinkfgimg {width: 0; height: 145px;} #navmenu a span#thirdlinkbgimg {width: 143px; height: 105px; background-color: pink;} #navmenu a span#thirdlinkfgimg {width: 143px; height: 105px; background-color: red;} #navmenu a:hover span#thirdlinkfgimg {width: 0; height: 143px;} #navmenu a span#fourthlinkbgimg {width: 140px; height: 105px; background-color: purple;} #navmenu a span#fourthlinkfgimg {width: 140px; height: 105px; background-color: blue;} #navmenu a:hover span#fourthlinkfgimg {width: 0; height: 140px;} /* Bug Fix for IE - non-reactive link spans */ #navmenu a:hover {zoom: 1;}
Simply change out the background-color: n; and substitute with your images.
Please note...
bgimg is the image you want to see when you are hovering - it sits behind/underneath fgimg.
When you hover, the fgimg will disappear from view, showign the image behind it.
hope that helps
Posted 26 February 2008 - 05:12 AM
Posted 27 February 2008 - 05:19 AM
#8 Guest_Autocrat_*
Posted 27 February 2008 - 07:21 AM
Posted 18 April 2008 - 08:08 AM
#10 Guest_Autocrat_*
Posted 18 April 2008 - 09:30 AM
So, start a new topic, and in it provide as much detail as you can on what you want it to do.
If at all possible, also supply a link to ademo page/image/sample etc.
We'll have a look and see whats what
Posted 24 July 2008 - 08:19 AM
just thought i'd post an update on this as we're half way through another project at the moment and came across the exact same issue i had before on the Hodder Children's site. We managed to solve it this time by re-saving the image files we were using for the roll overs (as before only certain buttons or groups of buttons seemed to be effected).
We re-saved the GIF's with the following settings;
GIF - Web Adaptive - Alpha Transparency - 128 colours - no dithering
We're using Macromedia Fireworks, version 8. i don't know if maybe this issue can be caused by particular settings on the GIF format, but this seemed to solve the problem for us in this instance. I don't know if these settings will always fix it, but it does seem like it's worth fiddling with the export options when saving your gif buttons to be used as roll overs if you experience this same bug i had.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users


text:
Intermittent Naltrexone Among Polysubstance Users (Project iN)
This study has been completed.
University of California, San Francisco
National Institute on Drug Abuse (NIDA)
Information provided by (Responsible Party):
Glenn-Milo Santos, University of California, San Francisco
ClinicalTrials.gov Identifier:
First received: November 2, 2012
Last updated: December 12, 2014
Last verified: December 2014
- Full Text View
- Tabular View
- No Study Results Posted
- Disclaimer
- How to Read a Study Record
Naltrexone, a µ-opioid receptor antagonist, is a promising agent for methamphetamine-using and binge-drinking men who have sex with men (MSM). Naltrexone has shown efficacy in reducing relapse to amphetamines and is FDA-approved for alcohol dependence. Oral naltrexone is inexpensive and has few toxicities but the standard daily regimen for naltrexone is problematic as patients forget to take the medication. Given the challenges in daily dosing, alternate regimen schedules have been proposed to increase efficacy and expand the population that may benefit from this pharmacologic agent. One approach is intermittent targeted administration of naltrexone, whereby individuals take the medication as-needed in anticipation of substance use or during periods of craving. Administration of naltrexone prior to exposure to amphetamines significantly attenuates craving and targeted naltrexone has shown efficacy in reducing heavy alcohol use. However, there have been no studies assessing intermittent targeted dosing of naltrexone among methamphetamine-using and binge-drinking MSM. Polysubstance use patterns are common among MSM, and studies among those who abuse more than one substance are urgently needed. The aims of this study are to determine whether targeted dosing of naltrexone is feasible, tolerable and acceptable among non-dependent methamphetamine-using and binge-drinking MSM.
|Methamphetamine Alcohol
|Drug: Intermittent Oral Naltrexone Drug: Placebo
|Phase 2
|Study Type:
|Study Design:
|Allocation: Randomized
Intervention Model: Parallel Assignment
Masking: Quadruple (Participant, Care Provider, Investigator, Outcomes Assessor)
Primary Purpose: Prevention
Resource links provided by NLM:
MedlinePlus related topics: Methamphetamine
Drug Information available for: Naltrexone Naltrexone hydrochlorideU.S. FDA Resources
Further study details as provided by Glenn-Milo Santos, University of California, San Francisco:
Primary Outcome Measures:
- Feasibility [ Time Frame: proportions eligible and enrolled assessed on ongoing basis throughout the study, proportion of visits completed assessed bi-weekly for each participant; overall retention assessed over 2 month follow-up for each participant ]Proportion of persons screened who are eligible and enrolled; proportion of scheduled study visits completed; final retention by study arm.
- Tolerability [ Time Frame: at each bi-weekly visit throughout the 2 month follow-up for each participant ]Comparison of adverse events in the naltrexone and placebo arms.
- Acceptability [ Time Frame: adherence assessed daily through electronic monitoring, pill count and self-report assessed at bi-weekly visits over the course of 2 month follow-up ]Adherence to naltrexone and placebo, as determined via electronic monitoring device (WisePill) data, pill count, and self-report.
Secondary Outcome Measures:
- Methamphetamine use and drinking outcomes [ Time Frame: assess at baseline, month 1 and month 2 visits ]
- Sexual Behaviors [ Time Frame: assessed at baseline, month 1 and 2 visits ]
|Study Start Date:
|May 2013
|Study Completion Date:
|November 2014
|Primary Completion Date:
|October 2014 (Final data collection date for primary outcome measure)
|Assigned Interventions
Active Comparator: Naltrexone
Intermittent oral naltrexone to be taken on an as-needed basis for 8 weeks.
|Drug: Intermittent Oral Naltrexone
Placebo Comparator: Placebo
Intermittent oral placebo to be taken on an as-needed basis for 8 weeks
|Drug: Placebo
|Ages Eligible for Study:
|18 Years to 70 Years (Adult, Senior)
|Sexes Eligible for Study:
|Accepts Healthy Volunteers:
Inclusion Criteria:
- male gender or transgender male-to-female
- self-reported anal sex with men in the prior six months while under the influence of meth and/or alcohol
- self-reported meth use at least bi-weekly in the prior three months
- at least weekly binge drinking (five or more drinks on a single drinking session) in the prior three months
4) interested in reducing meth use and/or binge drinking 5) HIV-negative by rapid test or medical record of HIV infection 6) no current acute illnesses requiring prolonged medical care 7) no chronic illnesses that are likely to progress clinically during trial participation 8) able and willing to provide informed consent and adhere to visit schedule 9) age 18-70 years 10) baseline complete blood count (CBC), total protein, albumin, glucose, alkaline phosphatase, creatinine, blood urea nitrogen (BUN), and electrolytes without clinically significant abnormalities as determined by study clinician in conjunction with symptoms, physical exam, and medical history
Exclusion Criteria:
- any psychiatric (e.g., depression with suicidal ideation) or medical condition that would preclude safe participation in the protocol
- known allergy or previous adverse reaction to naltrexone
- current use of or dependence on any opioids or a known medical condition which currently requires or may likely require opioid analgesics
- opioid-positive urine test at enrollment
- current cluster of differentiation 4 (CD4) count < 200 cells/mm3
- moderate or severe liver disease (aspartate aminotransferase, alanine aminotransferase, or total bilirubin > 3 times upper limit of normal)
- impaired renal function (creatinine clearance < 60 ml/min)
- currently participating in another research study
- meth or alcohol dependence as determined by Structured Clinical Interview for Diagnostic and Statistical Manual of Mental Disorders (SCID) criteria
- any condition that, in the principal investigator and/or study clinician's judgment interferes with safe participation or adherence to study procedures.
- unwillingness to provide minimum locator for information
- not having a cellular phone that can send or receive a text message
- plans to leave the Bay Area during study follow-up
- not comfortable speaking and reading English, enough to participate in a program in English
Contacts and Locations
Choosing to participate in a study is an important personal decision. Talk with your doctor and family members or friends about deciding to join a study. To learn more about this study, you or your doctor may contact the study research staff using the Contacts provided below. For general information, see Learn About Clinical Studies.
Please refer to this study by its ClinicalTrials.gov identifier: NCT01723384
Please refer to this study by its ClinicalTrials.gov identifier: NCT01723384
|United States, California
|San Francisco Department of Public Health, Substance Use Research Unit
|San Francisco, California, United States, 94102
Sponsors and Collaborators
University of California, San Francisco
National Institute on Drug Abuse (NIDA)
|Principal Investigator:
|Glenn-Milo Santos, PhD
|University of California, San Francisco
|Study Director:
|Jason Euren, MA
|San Francisco Department of Public Health
More Information
Keywords provided by Glenn-Milo Santos, University of California, San Francisco:
Additional relevant MeSH terms:
ClinicalTrials.gov processed this record on September 25, 2017
|Responsible Party:
|Glenn-Milo Santos, Assistant Professor, University of California, San Francisco
|ClinicalTrials.gov Identifier:
|NCT01723384 History of Changes
|Other Study ID Numbers:
R36DA035109-01 ( U.S. NIH Grant/Contract )
|Study First Received:
|November 2, 2012
|Last Updated:
|December 12, 2014
Keywords provided by Glenn-Milo Santos, University of California, San Francisco:
sexual behavior
Additional relevant MeSH terms:
Narcotic Antagonists
Physiological Effects of Drugs
Sensory System Agents
Peripheral Nervous System Agents
ClinicalTrials.gov processed this record on September 25, 2017


text:
Did you know that the John F. Kennedy Center for the Performing Arts offers free musical performances each and every day of the year? That's right! At 6 p.m. every evening, 365 days a year, The Kennedy Center offers a free show on its Millenium Stage. With spectacular views of the Potomac, and the Washington Harbor nearby, The Kennedy Center is a delightful place to be in the spring and summertime. While the weather is warm, take in an evening show!
For directions to The Kennedy Center, view their directions and transit instructions here. The nearest metro is Foggy Bottom, and The Kennedy Center offers free shuttle service from the metro. Our accommodations in Washington DC is less than 2 miles away.
Jennifer, Innkeeper
American Guest House in Washington DC


text:
Christmas Cup
The Christmas Cup gives Canada's National Women's Team hopefuls the opportunity to play for the first time in an international event.
Team Canada, includes younger members of the senior NWT and first time Team Canada representatives. The Under-22 Team faces-off against German and Swiss senior teams in a round robin - total point tournament.
For more information:
Kalli Quinn Director, Female National Teams | Équipes nationales féminines


text:
I am Smartest man in forum land and you must be you!
WWE resigned Punk, and everything I've said has come true on these things, so WWE, keep Punk a badass face. He will become a legend if you do.
JBW is so good, even the most cynical member of the IWC couldn't complain about it. Check out or most recent shows here!
And join in on the discussion here. We will welcome you with open arms. Please join now by PMing me or WWTNA Mark!
Horror movie tournament final: The Shining vs. Silence of the Lambs vs. Halloween...coming very soon.


text:
Events for each topic of interest are updated daily as new events are added. Please check back for the most current information regarding your area of interest.
Read about the TPWD Privacy Policy.
© 2005-2008 Texas Parks and Wildlife Department
This document and other documents provided pursuant to the State Parks Getaways e-newsletter are for information purposes only. Texas Parks and Wildlife Department cannot guarantee the accuracy of any information presented after the date of publication. Information provided in this document is provided "as is" and this e-newsletter may be copied and distributed subject to the following conditions: (1) All text must be copied without modification and all information must be included; (2) All copies must contain TPWD's copyright notice and any other notices provided therein; (3) This document may not be distributed for profit.


text:
MIKE Coles insists that Wiltshire need to focus all of their attentions on beating Shropshire and rising to the top of the pile on the Unicorns Championship judgement day after they slipped off the top of the Western Division table this week.
The county saw their lead at the summit extinguished as they suffered a 226-run defeat against Cheshire at South Wilts this week, setting up a three-way shoot out between the two sides and Herefordshire on the final week of the season.
Wiltshire find themselves just a point behind Cheshire and three ahead of Herefordshire ahead of their trip to Shropshire on August 17 and skipper Coles says that his team can't afford to dwell on this week's disappointing reverse.
"You could see that everyone was really disappointed on Tuesday and we spent 45 minutes having a chat after the game – we know that we've just got to think about going to Shropshire and making sure that we win the game and pick up as many bonus points as we can," said the Wiltshire captain.
"We took four points from the game this week and Cheshire took 22, so that just shows how many permutations there can be. We've got to try and concentrate on ourselves and myself and Shards (Neil Shardlow, team manager) will worry about how the other teams get on.
"We can't dwell on losing to Cheshire. Unfortunately, we've lost at the wrong time but we can still finish top if we do our job in ten days' time."
Richard Moore hit 119 to help Cheshire to 227 in their first innings before they were skittled, with Tahir Afridi taking four wickets, but Wiltshire's crumbled with the bat in their own first outing as they were dismissed for 174.
Calum Rowe then fired the hosts further into the lead as he smacked an unbeaten 155, with Moore (76) and Lee Dixon (60) contributing as Cheshire declared on 381-4.
Ed Young got Wiltshire's highest second-innings score as Coles' men were then all out for 208.
MORE SPORTS NEWS, PICTURES AND REACTION IN THIS THURSDAY'S GAZETTE AND HERALD AND THIS FRIDAY'S WILTSHIRE TIMES. FOLLOW US ON TWITTER @gazsport AND @WTSport


text:
Las Vegas -- Denny has opened a flagship diner, called "Denny's on Fremont," on Freemont Street in downtown Las Vegas. Among other attractions, the one-of-a-kind diner: boasts an in-house wedding chapel.
The restaurant features a selection of menu items available only at this location – including a bacon-flavored martini coined the "Bakontini" and an Elvis-inspired "King Stack" featuring peanut butter, bananas and bacon with fluffy buttermilk pancakes. Patrons can also document the trip at the store's interactive photo booth where they can take fun photos with quintessential Vegas props, then share them instantly on their Facebook or Twitter accounts through integrated social technology.
"The diner is the original social network where the community gathers to share and connect, so we wanted to create a space that reflected that spirit," said Frances Allen, Denny's chief marketing officer. "From the weaving yellow bands on the exterior of the diner to the interactive sensory experiences, this is a place that visitors will not soon forget."


text:
Don't miss out on a lower price on this hotel
Get an overview of this hotelHotel in Winston-Salem with free breakfast and indoor pool
Popular property highlights
Situated in the business district, this hotel is 0.9 mi (1.5 km) from SciWorks and within 6 mi (10 km) of Wake Forest University and Lawrence Joel Veterans Memorial Coliseum. Reynolda House Museum of American Art and Reynolda Gardens are also within 6 mi (10 km).
Hotel Features
Along with an indoor pool, this hotel has a fitness center and a 24-hour business center. Free buffet breakfast, free WiFi in public areas, and free self parking are also provided. Additionally, coffee/tea in a common area, conference rooms, and dry cleaning are onsite.
Room Amenities
All 94 rooms provide conveniences like refrigerators and microwaves, plus free WiFi and LCD TVs with cable channels. MP3 docks, coffee makers, and free local calls are among the other amenities available to guests.Information missing or incorrect? Tell us!Opens in a new window
Hampton Inn and Suites University Area
Hotel Amenities
Hotel Amenities
Hampton Inn and Suites University Area features an indoor pool and a fitness center. Public areas are equipped with complimentary wired and wireless Internet access. This hotel offers access to a 24-hour business center and a meeting room. Guests can enjoy a complimentary breakfast. Event facilities measuring 977 square feet (91 square meters) include conference space. This business-friendly hotel also offers barbecue grills, multilingual staff, and coffee/tea in a common area. Onsite self parking is complimentary.
Hampton Inn and Suites University Area has designated areas for smoking.
- Total number of rooms - 94
- Number of floors - 4
- Barbecue grill(s)
- Coffee/tea in common areas
- Free newspapers in lobby
- Free breakfast
- Conference space
- Dry cleaning/laundry service
- Elevator/lift
- Express check-in
- Express check-out
- Fitness facilities
- Designated smoking areas
- Free WiFi
- Free wired Internet
- Luggage storage
- One meeting room
- 24-hour front desk
- Laundry facilities
- Multilingual staff
- Safe-deposit box at front desk
- Free self parking
- Conference space size (meters) - 91
- Year Built 2010
- 24-hour business center
- Conference space size (feet) - 977
- Number of buildings/towers - 1
- Indoor pool
- Television in common areas
Family Friendly Amenities
- Family Hotel
- Indoor pool
- Free Wi-Fi
- Laundry facilities
- Refrigerator
- Microwave
Available in all rooms: Free WiFi
Available in some public areas: Free WiFi , Free wired Internet
Free self parking
Room Amenities
- Premium TV channels
- Air conditioning
- In-room climate control (air conditioning)
- Free local calls
- Microwave
- Refrigerator
- Coffee/tea maker
- Daily housekeeping
- Private bathroom
- Free toiletries
- Hair dryer
- Shower/tub combination
- Iron/ironing board
- Desk
- Blackout drapes/curtains
- Cable TV service
- Free WiFi
- MP3 docking station
- Connecting/adjoining rooms available
Where to Eat
Guests are offered a complimentary hot/cold buffet breakfast.
Nearby Things to Do
Recreational amenities at the hotel include an indoor pool and a fitness center.
The recreational activities listed below are available either on site or nearby; fees may apply.
- Golfing nearby
- Rafting nearby
- Kayaking nearby
- Water skiing nearby
- Hiking/biking trails nearby
- Mountain biking nearby
- Golf lessons available nearby
- Segway rental/tour nearby
- Rock climbing nearby
- Ziplining nearby
If you have requests for specific accessibility needs, please note them at check-out when you book your room.
- Accessible bathroom
- In-room accessibility
- Roll-in shower
Hotel Policies
Check-in time ends at midnight
Check-in time starts at 3 PM
Minimum check-in age is 21
Check-out time is 11 AM
Payment types
Children and extra beds
- Children are welcome.
- Kids stay free! Children 18 years old and younger stay free when using existing bedding.
- Rollaway/extra beds are not available.
- Cribs (infant beds) are not available.
- Pets not allowed
You need to know
Extra-person charges may apply and vary depending on property policy.
- Minimum Spring Break check-in age is 21 years old.
Hotel Name
- Hampton Inn University Area Winston-Salem
We should mention
Children 18 years old and younger stay free when occupying the parent or guardian's room, using existing bedding. Only registered guests are allowed in the guestrooms. The property has connecting/adjoining rooms, which are subject to availability and can be requested by contacting the property using the number on the booking confirmation. Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.


text:
Skip to main content
Our Partner Sites
S.L.E. Lupus Foundation
Lupus Clinical Trials
Search form
Subscribe to Updates
Lupus Research Institute
Donate now
About LRI
Our Unique Approach
Scientific Advisors
Peer Review Process
Physicians Advisory Council
LRI Video
Contact Us
Lupus News
Latest on Lupus from the LRI
Other Lupus News
LRI Newsletters
E-newsletter Archives
Subscribe to Updates
Print Newsletter Archives
Press Releases
Lupus Events
Lupus Facts
No Two Cases Are Alike
Lupus Symptoms
Lupus Diagnosis
Diagnosed with Lupus?
Lupus Fact Sheet
Lupus Treatments
Fight Lupus in Body and Mind
Caring for Your Cardiovascular System
Easing Joint and Muscle Pain
Exercise and Lupus
Lupus and the Flu
Lupus and Massage
Lupus and Your Kidneys - Lupus Nephritis
Lupus and Your Skin
Lupus Myelitis
Oral Contraceptive Use and Lupus
Pregnancy and Family Planning
Single with Lupus
Thinking, Memory and Behavior
What is Antiphospholipid Syndrome?
What You Should Know About Lupus
Inflammatory Vasculitis
Smart Moves
Introduction to the Immune System
Lupus Links
Living with Lupus
Lupus Brochures
Our Research
Pioneering Discovery
Our Unique Approach
Dr. William E. Paul Distinguished Innovator Award Recipients
LRI Grant Recipients
2016 Novel Grant Recipients
Grant Recipients by State
Grant Recipients By Year
Apply for an LRI Grant
Major Breakthroughs
Funding Leveraged
Annual LRI Conference
The Voice for Lupus
Awareness Drive
National Coalition of Lupus Groups
National Coalition Members & Partners
Legislative Action Center
LRI Advocacy Resources
Helping Cure Lupus
You Make the Difference
Join our NYC Young Leaders
Planned Giving
Federal Employees Fuel Discoveries with CFC
Work for Lupus Research at Work
Get Involved!
Hold a Fundraiser
Text to Give
Link to Us
Our Partners
Latest on Lupus from the LRI
December 18, 2012
LRI Petitions HHS for Patient Protections in Insurance Coverage
December 6, 2012
New Article Underscores Need for Lupus Initiative to Address Racial Disparities Among Hispanics and Others of Color
December 5, 2012
Congressional Lupus Caucus Co-chair Commends Our Supporters
November 20, 2012
S.L.E. Lupus Foundation Raises $2.5 M to Turn "Lupus Research Upside Down" At Gala 2012
October 26, 2012
LRI Coalition Members Present Generous Donations to Research
October 25, 2012
LRI Awards First $1 Million Private Sector Research Grants to Uncover the Root Causes of Lupus That Can Drive to a Cure
October 25, 2012
Pivotal Findings on Autoimmune Disease Shared at Lupus Research Institute "Forum for Discovery"
October 22, 2012
LRI's 2012 Forum for Discovery Gathers 60+ Scientists to Share Insights and New Findings on Lupus
October 18, 2012
European Professional Organization Issues New Lupus Nephritis Treatment Guidelines
October 4, 2012
LRI National Coalition Member to Receive Prestigious Service Award
October 2, 2012
Experimental Test Builds on LRI-Funded Work to Improve Lupus Diagnosis
October 1, 2012
LRI Joined 200+ Organizations in Voicing Need for Federal Support of Medical Research
September 11, 2012
Advocacy Pays Off
September 5, 2012
LRI Coalition Member Gathering Support for Petition Against Fail First Step Therapy
August 29, 2012
LRI Supports CA Coalition Member Advocating for Bill Protecting Medical Rights
August 6, 2012
LRI Novel Grant to Yale Investigator Garners Large-Scale Federal Funding
July 26, 2012
LRI Coalition Member to Serve as New Patient Advocate on Lupus Connect
July 24, 2012
LRI Coalition Member Kathleen Arntsen Advocates for Lupus Clinical Trials
July 24, 2012
Olympic Athlete Champion Determined to "Win" Despite Lupus
July 19, 2012
New report reviews how Affordable Healthcare Act affects American women: Useful information for women with lupus
« first
‹ previous
next ›
last »
Lupus News
Latest on Lupus from the LRI
Other Lupus News
LRI Newsletters
Press Releases
Lupus Events
Learn About Research
Key Discoveries
Lupus Clinical Trials
Support Research
Text to Give
Donate for Discovery
Get Involved
Local Lupus Events
Connect with LRI
Subscribe to updates
Join us on Facebook
Follow us on Twitter
Watch us on YouTube


text:
Art Print
Smoke Art 86by Steve Purnell
25% Off Everything - Ends Tonight at Midnight PT!
Collect your choice of gallery quality Giclée, or fine art prints custom trimmed by hand in a variety of sizes with a white border for framing.
Photographing smoke trails gives some weird and wonderful shapes and patterns. When this is combined with photoshop, it is surprising what can be achieved. An abstract smoke trail image. Original photograph manipulated and coloured in photoshop.
smoke trail, smoke trails, smoke, smoke art, trails, trail, patterns, pattern, shapes, shape, colours, abstract, incense sticks, incense smoke, flame, fire,


text:
Why are the relatively modest costs of sidewalks, bicycle lanes and paths, and pedestrian improvements met with suspicion and hostility by the conventional auto-oriented transportation community? What are the true costs and the true benefits of these projects?
Todd Litman of the Victoria Transport Policy Institute has provided many of these answers in his latest publication, Evaluating Non-Motorized Transport Benefits and Costs.
Litman challenges the perception that non-motorized transportation improvements (for travel modes such as walking, bicycling, and wheelchairs) only benefit a small subset of users. He claims that they, in fact, benefit nearly everyone, even the most dedicated motorists. After all, people who consider themselves motorists must get to and from their cars and benefit from accessible, convenient, and efficient connections between their cars and their destinations.
Conventional cost-benefit analysis heavily favors car-oriented projects at the expense of considering the importance of a diverse and dynamic transportation system that includes non-motorized modes as integral to the overall system.
Litman meets the typical arguments against non-motorized transport projects with well-considered and practical responses, summarized here;
- Inferior Good: Road projects are an indication of wealth, according to critics of spending on non-auto transportation projects. One look at many wealthy communities – those with many walkers, bicyclists, and pedestrians – proves that providing an array of transportation options is the key to and an indicator of community well-being.
- Slow and Inefficient: While walking and bicycling are often slower than traveling by car, non-motorized transportation is often very efficient, and those transportation options actually increase efficiency through cost savings and the benefits of connecting places, people, goods, and services.
- Excessive Costs and Subsidies: The true costs of roadway projects are rarely considered by the models typically used to justify them. These include increased crashes resulting from higher speeds and volumes, and the decrease of physical activity due to car travel. Similarly, the true benefits of non-motorized projects are rarely considered when arguing against such projects.
- Unfair to Motorists: Non-motorized transportation projects do not benefit motorists and should not be funded with transportation dollars. The true cost of road subsidies, however, is rarely considered by proponents of this view. Litman also argues that non-motorized facilities offset the negative impacts of roadway projects such as air pollution and water-quality issues.
- Inefficient and Wasteful: The lack of demand for bicycle and pedestrian facilities is often cited as a reason to not "waste" funds on such projects. The most successful places, however, are those that provide diversity of transportation options and connections. Those places become centers of social and economic life by attracting people who arrive by or use the non-motorized facilities.
So Litman concludes: Diverse and robust transportation networks – including motorized and non-motorized facilities – are the most efficient and cost effective when the true costs and benefits are calculated. Litman provides specific cost and benefit categories and explains how non-motorized transport projects can be more accurately analyzed and justified, which should be a big help going forward as researchers like all of us at Simple Solutions Planning & Design continue to make progress on showing what a great return-on-investment non-motorized transport is for officials and developers.
Photo by Victoria Transport Policy Institute


text:
Good Uncle finds Syracuse University's missed market: a quality meal plan at honest rate
SU students spoke, and Good Uncle has listened. Starting this semester, Good Uncle is offering an alternative meal plan with a ton of perks. Read more »
SU students spoke, and Good Uncle has listened. Starting this semester, Good Uncle is offering an alternative meal plan with a ton of perks. Read more »
Onondaga Community College's teaching restaurant has changed hands from Pakistani food to Burmese offerings, as With Love reveals a new destination for the next six months. Read more »
Ice-cream shops in the Syracuse area have begun to open for the summer season, offering summer specials and signature treats. Read more »
After years of undergraduate studies, seniors deserve a classier, yet still easy, drink to power through graduation. Here are a few suggestions. Read more »
For those not sure where to go for a post-graduation celebration, check out these local bars for a celebratory drink or 10. Read more »
The Orange Crate Brewing Co., commonly known as Lucy's, is nearing its final days at its current location. Owner R.C. Faigle's ties to the space go back to 1988. Read more »
The up-and-coming New York Craft Beer App gives users the chance to browse local craft breweries. It's worth the download if you're a craft connoisseur. Read more »
The Onondaga Free Library's book club organized a French dessert bake-off as an additional way to learn about the book of the month, and as a way to welcome new faces to the library. Read more »
Adding a couple ounces of rum to a berry smoothie gives the illusion of health, but the feeling of a tropical summer drink. Read more »
With Love, Pakistan serves up traditional Pakistani dishes by Sarah Robin, a refugee from Pakistan and the current entrepreneur-in-residence at Onondaga Community College's teaching restaurant. Read more »
This sangria strays from traditional red wine-based versions, but it is a great light, bubbly drink to share with friends as the weather warms up. Read more »
The newly opened Salt City Coffee in the Westside neighborhood serves up locally roasted coffee, tea and sandwiches in a living room setting. Read more »
Hungry Chuck's may be closing soon, before that happens here are some tips to bring the Chuck's experience to your house. Read more »
The newcomer to campus food delivery is changing the game by bringing iconic New York City brands to Syracuse. Read more »
Find out where Final Four fans are grabbing grub in the college towns of Spokane, Eugene, Columbia and Chapel Hill. Read more »
Perfect for an April Fools' Day party, or for when you feel like being fancy but not drinking something that tastes like bitter whiskey, The Syracuse looks just like a Manhattan, but is fresher, crisper and sweeter. Read more »
The Daily Orange spoke with Dinosaur Bar-B-Que's marketing director to get the inside scoop on the new "Yoga & BBQ." Read more »
Elmcrest Children's Center hosted the 14th annual Meatball Madness on Sunday, and the meatballs the Palace Theater's Paul Valenti took home first place at the fundraiser. Read more »
Taking three spring-season fruits and mixing it with what is essentially a boozy lemonade makes for a perfect, very British, start to spring. Read more »
Jonah Mossberg's documentary film "Out Here" looks into the lives of queer farmers in the United States. It will be screened at Syracuse University on March 28. Read more »
"The Farmer and the Chef" is this year's theme for the annual Signature Chefs Auction put on by the local March of Dimes chapter. The event promotes healthy eating and suitability through local farmers and chefs. Read more »
Kris Dulmer and Brad Fierke have been tapping maple trees for sap for eight years. They use the sap to make syrup of various flavors. Read more »
Beer-drinkers gathered last weekend on Tipperary hill for a colorful event: Green Beer Sunday Read more »
The Westcott neighborhood's Recess Coffee turns 10 this year and opened up a new location just last year. Here's what the café has been doing it right and why its customers are so loyal. Read more »
E-mail Newsletter
Boston, MA · email@example.com


text:
What eight teams knew last Thursday evening, the other four entries in the Central Coast Section field hockey playoffs didn't find out until Saturday afternoon–that would be, which teams would quality for the prestigious postseason event.
The top four finishers in the Mt. Hamilton Division of the Blossom Valley Athletic League were automatic entries in the CCS tourney, along with the champions in the BVAL Santa Teresa and West Valley divisions and the top two finishers in the Mission Trails Athletic League.
But for the other four teams in the field, earning section berths meant winning "play-in games" last week, a first for the Central Coast Section.
The Mt. Hamilton Division's top four finishers–Los Gatos, Archbishop Mitty, Gilroy and St. Francis–were joined by Santa Teresa champ Cupertino, West Valley winner Willow Glen and the Mission Trails top two–Christopher and North Salinas–as automatic entries in the playoffs. Eight other teams, though, met in "play-in" games on Saturday to round out the field.
Saratoga blanked Westmont 3-0, Presentation edged Live Oak 2-1, Leigh tripped Leland 1-0 on an overtime goal by Maddy Fama and Lynbrook whipped Los Altos 4-0 behind a goal and two assists by Emily Novakovich and goals by Dana Rothwein and Kristina Okamoto.
Mt. Hamilton champion Los Gatos (17-1-1 overall this year) enters the playoffs as the No. 1 seed, with Mitty No. 2, Gilroy No. 3 and St. Francis No. 4. All four draw first-round byes and open CCS in quarter-final games at Lynbrook on Nov. 10 (9:30 a.m., 11:15 a.m., 1 p.m. and 2:45 p.m.).
No. 6 Cupertino (13-1) will host No. 11 Presentation (4-11-2), No. 7 Willow Glen entertains No. 10 Lynbrook (7-6-1), No. 5 Saratoga (7-7) is home against No. 12 North Salinas (12-1-1) and No. 8 Christopher (12-0-2) faces No. 9 Leigh (10-8-1) at a site to be determined in 3 p.m. games on Nov. 8.
Mt. Hamilton
Los Gatos defeated Saratoga 2-0 and Presentation last week, and with Mitty and St. Francis battling to a 1-1 tie, the Wildcats won the division crown. Molly O'Flaherty scored the lone goal for the Panthers, who also lost 2-0 to St. Francis last week.
Mitty beat Los Altos before tying the Lancers, and Los Altos came back with a 2-0 win over Leland. The Chargers had been crushed 10-0 by Gilroy earlier in the week. Gilroy finished the regular season with a win over Saratoga.
Mount Hamilton Division standings: Los Gatos 12-1-1 (17-1-1), Archbishop Mitty 11-1-2 (14-3-2), Gilroy 9-3-2 (16-3-2), St. Francis 8-5-1 (15-5-2), Saratoga 7-7, Presentation 3-10-1 (4-11-2), Los Altos 2-11-1 (4-12-1), Leland 0-14 (0-18)
Santa Teresa
Cupertino had wrapped up the division championship heading into play last week, but added the finishing touches by beating Del Mar 2-1 and Leigh 2-0.
Senior forward Jackie Ballin scored off of assists from junior forward Farica Carroll and junior mid Chrissy Velasquez and senior defender Julia Seaton knocked in an unassisted goal to lead the Pioneers past the Longhorns.
Earlier in the week Carroll and sophomore mid Jordan Amick each scored goals off assists from Ballin in the 2-1 win over Del Mar.
The Dons also lost 3-0 to Live Oak in the final week of league play.
Prior to falling to Cupertino, Leigh had outlasted Prospect 3-2 in overtime. Fama pumped in two goals for the Longhorns and Jessica Hauck had a goal and an assist. Paige Kettenburg added two assists in the win and Kendra Schultz had one.
Senior mid Karlie Wreaks and junior defender Sarah Schirle each scored for the Panthers. Senior mid Gabi Riccardi-Shortt had two assists and senior defender Felicia Miller and junior forward Maycee Corpuz also had assists.
That was the first of two losses on the week for the Panthers. Sophomore Andrea Scoles scored off of a Riccardi-Shortt assist, but Prospect lost 2-1 to Monta Vista.
Sarah Im scored twice to lead Monta Vista to the victory and Janaye Sakkas and Katie Bryne had assists.
The Matadors were coming off of a 4-2 loss to St. Ignatius. Im and Arushi Agarawala each scored for the Mats and Bryne had two assists.
In other action in the division, Lynbrook split a pair of games, beating SI 2-0 on a couple of goals by Novakovich but losing 4-2 to Live Oak. Karin Ito and Rothwein each scored for the Vikings and Novakovich had an assist in the loss to the Acorns.
Santa Teresa Division standings: Cupertino 13-1 (15-2-1), Leigh 7-6-1 (10-8-1), Lynbrook 7-6-1 (12-6-1), St. Ignatius 6-7-1, Monta Vista 6-7-1 (7-10-1), Live Oak 6-7-1 (9-10-1), Prospect 6-7-1 (7-8-1), Del Mar 2-12 (3-18)
West Valley
Willow Glen won the division championship and a berth in the CCS playoffs, but the Rams were stung by a 2-0 loss to Branham in the final game of the regular season.
Senior Hayley Martinez knocked in two second-half goals to lead the Bruins to the upset win. Seniors Sara Schiro and Taylor Rusconi and junior Allie Lawrence each had assists for Branham.
The win, coupled with a 2-0 win over Sobrato earlier in the week, helped the Bruins finish league play with a winning record at 5-4-3. Senior Jenny Boltz and Lawrence each scored goals and Martinez had an assist in the win over the Bulldogs.
Westmont managed to pull out a couple of ties in the final week to claim second place in the division and earn a spot in the CCS "play-in" game.
A first-half goal by senior Julia Matson off an assist from junior Amanda Lavond helped the Warriors claim a 1-1 draw with University to close out the regular season.
Earlier in the week, Lavond and senior Lexi Rhodes each scored goals in a 2-2 draw with Homestead. Senior forward Megan Andrews and senior defender Sydney Keith each scored goals for the Mustangs.
Partial West Valley Division standings: Willow Glen 10-1-1, Westmont 6-2-4, Homestead 5-2-3, Branham 5-4-3, San Jose 0-8, Sobrato 3-6-2, University 2-6-1


text:
On January 21st, 2011, Major League Lacrosse announced the addition of a MLL team in Columbus, Ohio. One year and almost eight months later, the expansion franchise the Ohio Machine finished up its inaugural season in MLL.
The Machine's season began on May 5th when Ohio traveled to Annapolis, Maryland, to play the Chesapeake Bayhawks. Ohio started off strong in the first quarter by scoring five goals, including the team's first ever goal scored by midfielder Matt Casey. The team found themselves down 11-6 right before halftime when attackman Jim Connolly scored his second career MLL goal. Midfielder Brett Garber followed Connolly's goal with the team's first two-point goal of the season. The Machine fell off in the second half, but the team's first game featured midfielder Matt Witko's first career goal and Connolly's first career hat-trick. The team may have lost its first ever game but Head Coach Ted Garber saw the positives in the defeat. "I knew we had a team that could be resilient and handle the adversity we would face during the season," said Garber.
Two weeks later the Machine welcomed the Rochester Rattlers to Selby Stadium for the team's first ever home game. In front of 6,126 fans the Machine jumped to a 9-3 lead over the Rattlers and went into the third quarter leading for the first time in franchise history. The Rattlers began to come back in the second half but a goal from Chazz Woodson ignited a four-goal run by Ohio and gave the Machine its first win in team history. Woodson had four goals and was named Bud Light Player of the Game. Goalie Stefan Schroder was spectacular in goal for Ohio, only allowing eight goals while picking up 17 saves. Schroder's career day earned him MLL Defensive Player of the Week.
The electric home crowd for the first game helped set the tone for home games the rest of the season. "Our first home game showed everyone what this team was capable of on and off the field," said Machine President and General Manager John Algie. "We beat a good Rochester team and showed people unfamiliar with our sport how good of a product we have. It was very important to get off to such a great start in front of so many people."
In the team's third home game of the season against the Long Island Lizards, the Machine debuted two of its top players from its inaugural season draft class, Steele Stanwick and Marshall Burkhart. Stanwick was selected second overall in the 2012 draft and shined in his debut. Stanwick scored his first career goal in the second quarter to give Ohio a 3-2 lead. Stanwick finished the day with two goals and one assist. Burkhart, the 50th overall pick in the draft and an Ohio Native, made an immediate impact netting an assist and helping the defense hold the Lizards to two goals in the fourth quarter.
Both rookies made significant contributions to the team but according to Garber there was still room for improvement. "The initial impact they made was good but making the transition [to the MLL] is not easy," said Garber. "Once they figure out the flow of the game they are going to be really strong players. As an offensive player, Steele learned a lot and utilized his feeding skills and Burkhart learned to get up on his man and play physical."
The Machine's promising first half of the season led to the selection of several of its players to the 2012 MLL All-Star game. Defensemen Greg Bice and Kyle Hartzell and attackman Chazz Woodson were named to Team Old School along with Head Coach Ted Garber. Attackman Jim Connolly was named to his first All-Star Game and played for Team Young Guns.
After the All-Star break the Machine continued to improve. During the second half of the season the Machine allowed 1.99 less goals per game than the first half of the season. The Machine also earned their second win during the second half of the season, defeating the Hamilton Nationals 13-12. The Machine clung to a one-goal lead throughout the game until Stanwick scored in the fourth quarter to seal the victory for Ohio. Stanwick finished the game with two goals and goalie Brian Phipps, who was named Budlight Player of the Game, had 18 saves.
The team finished its historic inaugural season on Saturday, August 11th, against the Boston Cannons. Machine defenseman Kyle Hartzell started off the game with his historic ninth two-point goal of the season. Hartzell's goal gave him 21 points on the year, which set the MLL record for most points in a season by a defenseman. Hartzell also finished the year with the records for most goals and two-point goals by a defenseman. Hartzell's contributions to the team extended beyond his records. "Hartzell is the kind of guy that leads by example and is known for his work ethic," said Algie.
The team's last game also marked defenseman Brett Hughes' last MLL game. Hughes played in 13 games for Ohio in 2012 and announced his retirement prior to the game.
Ohio ended its inaugural season ranked second in the league in power-play percentage and two-point goals scored and fourth in shooting percentage. The Machine also had 24 different players throughout the season register a point and six players score 10 or more goals. Throughout the season, Ohio had nine rookies dress this season and six of them recorded at least one point. Three of those rookies had 10 or more points and Stanwick led all MLL rookies in assists with 17.
The Machine was anchored by a strong veteran presence throughout the season. Six Machine players who had played for previous teams set career highs in points. Attackman Chazz Woodson led the team in points with 38 and set or tied career highs in points, goals, assists and shots and midfielder Connor Martin set career highs in goals, assists, points and shots, as well as groundballs.
With 35 points on the season attackman Jim Connolly enjoyed a breakout year. Prior to joining the Machine, Connolly only had one goal in two games for the Boston Cannons. This year Connolly led the team in goals with 27 and had five assists. Connolly was also a threat on the extra-man opportunity, netting six power-play goals, which tied him for second in the league.
Ohio's goalies also had career years. Last year goalie Brian Phipps was named to the MLL All-Star team but he posted a lower goals against average this year. During this season Phipps split time in the cage with goalie Stefan Schroder. Schroder played in a career high 495:00 minutes and also had 99 saves.
Now that the season is over, the team is preparing to cut the roster down to 23 and getting ready for the 2013 MLL Collegiate Draft. Even though the season just ended Garber is already looking forward to next year. "I have some ideas of things we have to key on after training camp," said Garber. "The good thing is that we will have the guys who haven't played in training camp before in camp and that will be a huge difference."
Despite the 2-12 record, the team proved it could compete with the best teams in the MLL and built a foundation for the future. "Throughout the season we proved that you can't tell a book from its cover," said Garber. "These guys have great things ahead of them. All they have to do is stay positive, committed and to be there when it counts."
Season ticket deposits for the Machine's 2013 season are available now to put down. Visit www.theohiomachine.com/tickets to put down your $10 deposit and secure your seat for all of next season's action.


text:
And, of course, the fine print:
Get free shipping on your next order when you spend over $100. The discount will be automatically applied to your purchase; no promo code required. The subtotal of your purchase must be $100.01 or greater after any promotional discounts have been applied. Additional fees such as tax or shipping and handling do not apply toward your minimum subtotal requirement of $100.01. Offer applies to standard shipping only. Certain items that require additional shipping and handling are excluded from this promotion and do not apply towards your $100.01 subtotal minimum. Offer subject to change.
With this set of vegan body products, which are chock-full of all the stuff your skin needs, healthful glowing (and good-smellin') skin is just a scrub or two away. The set includes all-natural body butter and body polish, each bursting with the soothing scent of lavender flowers.
Lavender Flower Body Butter (4 oz.)
Only the finest natural ingredients –– cocoa butter, shea butter, coconut oil, essential oils and vitamin E –– are whipped to perfection in this deliciously smooth body butter. It's full of the things your skin loves, like vitamins, and none of the stuff it doesn't. As a bonus, it's scented with lavender flowers. A little goes a long way.
Lavender Flower Body Polish (8 oz.)
As it turns out, the ultimate sugar fix is also entirely guilt-free. This body polish contains only natural ingredients including, of course, the exfoliating power of sugar crystals. The polish is scented with calming lavender flowers, with a sweet and delicate finish.
This product ships from the maker within 7 days, via USPS
If you're not happy with this item for any reason, you may return it for a full refund within 14 days.


text:
Baton Rouge-based Edgen Group Inc. has acquired HSP Group Ltd., a United Kingdom-based valve company with customers worldwide.
Details of the cash-and-stock deal were not disclosed.
Edgen acquired the company through subsidiary Edgen Murray Europe Ltd.
The acquisition complements Edgen Murray's services to customers by adding valve brand and actuation services — actuators open and close valves. HSP sells mainly to exploration and production, refining, petrochemical and power companies in the United Kingdom, Middle East and Caspian regions.
HSP Chief Executive Officer Peter Everett and his staff joined Edgen Murray under the deal. HSP's projected revenue for 2012 is $37 million.