forked from buffer/thug
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
90 changed files
with
4,781 additions
and
2,100 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
#!/usr/bin/env python | ||
from __future__ import with_statement | ||
|
||
import sys, re, string | ||
|
||
from HTML import BeautifulSoup | ||
import PyV8 | ||
|
||
from DOMException import DOMException | ||
from Node import Node | ||
|
||
class Attr(Node): | ||
_value = "" | ||
|
||
def __init__(self, parent, attr): | ||
self.parent = parent | ||
self.attr = attr | ||
|
||
self._value = self.getValue() | ||
|
||
def __repr__(self): | ||
return "<Attr object %s%s at 0x%08X>" % ("%s." % self.parent.tagName if self.parent else "", self.attr, id(self)) | ||
|
||
def __eq__(self, other): | ||
return hasattr(other, "parent") and self.parent == other.parent and \ | ||
hasattr(other, "attr") and self.attr == other.attr | ||
|
||
@property | ||
def nodeType(self): | ||
return Node.ATTRIBUTE_NODE | ||
|
||
@property | ||
def nodeName(self): | ||
return self.attr | ||
|
||
def getNodeValue(self): | ||
return self.getValue() | ||
|
||
def setNodeValue(self, value): | ||
return self.setValue(value) | ||
|
||
nodeValue = property(getNodeValue, setNodeValue) | ||
|
||
@property | ||
def childNodes(self): | ||
from NodeList import NodeList | ||
|
||
return NodeList(self.parent.doc, []) | ||
|
||
@property | ||
def parentNode(self): | ||
return self.parent | ||
|
||
# Introduced in DOM Level 2 | ||
@property | ||
def ownerElement(self): | ||
if self.parent: | ||
if self.parent.nodeType == Node.ELEMENT_NODE: | ||
return self.parent | ||
|
||
return None | ||
|
||
@property | ||
def ownerDocument(self): | ||
return self.parent.doc | ||
|
||
@property | ||
def name(self): | ||
return self.attr | ||
|
||
def specified(self): | ||
return self.parent.has_key(self.attr) | ||
|
||
def getValue(self): | ||
if self.parent: | ||
if self.parent.tag.has_key(self.attr): | ||
return self.parent.tag[self.attr] | ||
|
||
return self._value | ||
|
||
def setValue(self, value): | ||
self._value = value | ||
|
||
if self.parent: | ||
self.parent.tag[self.attr] = value | ||
|
||
value = property(getValue, setValue) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
from __future__ import with_statement | ||
|
||
import sys, re, string | ||
|
||
from DOMException import DOMException | ||
from Text import Text | ||
|
||
|
||
class CDATASection(Text): | ||
def __repr__(self): | ||
return "<CDATA '%s' at 0x%08X>" % (self.tag, id(self)) | ||
|
||
@property | ||
def nodeName(self): | ||
return "#cdata-section" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
#!/usr/bin/env python | ||
from __future__ import with_statement | ||
|
||
import sys, re, string | ||
import PyV8 | ||
|
||
from DOMException import DOMException | ||
from Node import Node | ||
|
||
class CharacterData(Node): | ||
def __init__(self, doc, tag): | ||
Node.__init__(self, doc) | ||
|
||
self.tag = tag | ||
|
||
def __str__(self): | ||
return str(self.tag) | ||
|
||
def getData(self): | ||
return unicode(self.tag) | ||
|
||
def setData(self, data): | ||
raise DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR) | ||
|
||
data = property(getData, setData) | ||
|
||
@property | ||
def length(self): | ||
return len(self.tag) | ||
|
||
def substringData(self, offset, count): | ||
return self.tag[offset:offset+count] | ||
|
||
def appendData(self, arg): | ||
raise DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR) | ||
|
||
def insertData(self, offset, arg): | ||
raise DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR) | ||
|
||
def deleteData(self, offset, count): | ||
raise DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR) | ||
|
||
def replaceData(self, offset, count, arg): | ||
raise DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#!/usr/bin/env python | ||
from __future__ import with_statement | ||
|
||
from DOMException import DOMException | ||
from CharacterData import CharacterData | ||
|
||
|
||
class Comment(CharacterData): | ||
@property | ||
def nodeName(self): | ||
return "#comment" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#!/usr/bin/env python | ||
from __future__ import with_statement | ||
|
||
import sys | ||
import PyV8 | ||
|
||
class DOMException(RuntimeError, PyV8.JSClass): | ||
def __init__(self, code): | ||
self.code = code | ||
|
||
# ExceptionCode | ||
INDEX_SIZE_ERR = 1 # If index or size is negative, or greater than the allowed value | ||
DOMSTRING_SIZE_ERR = 2 # If the specified range of text does not fit into a DOMString | ||
HIERARCHY_REQUEST_ERR = 3 # If any node is inserted somewhere it doesn't belong | ||
WRONG_DOCUMENT_ERR = 4 # If a node is used in a different document than the one that created it (that doesn't support it) | ||
INVALID_CHARACTER_ERR = 5 # If an invalid or illegal character is specified, such as in a name. | ||
NO_DATA_ALLOWED_ERR = 6 # If data is specified for a node which does not support data | ||
NO_MODIFICATION_ALLOWED_ERR = 7 # If an attempt is made to modify an object where modifications are not allowed | ||
NOT_FOUND_ERR = 8 # If an attempt is made to reference a node in a context where it does not exist | ||
NOT_SUPPORTED_ERR = 9 # If the implementation does not support the type of object requested | ||
INUSE_ATTRIBUTE_ERR = 10 # If an attempt is made to add an attribute that is already in use elsewhere | ||
|
||
# Introduced in Level 2 | ||
INVALID_STATE_ERR = 11 # If an attempt is made to use an object that is not, or is no longer, usable | ||
SYNTAX_ERR = 12 # If an invalid or illegal string is specified | ||
INVALID_MODIFICATION_ERR = 13 # If an attempt is made to modify the type of the underlying object | ||
NAMESPACE_ERR = 14 # If an attempt is made to create or change an object in a way which is incorrect with regards to namespaces | ||
INVALID_ACCESS_ERR = 15 # If a parameter or an operation is not supported by the underlying object | ||
|
Oops, something went wrong.