Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
peach-html5-editor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
parser: use strings for node types
[peach-html5-editor.git]
/
editor.coffee
diff --git
a/editor.coffee
b/editor.coffee
index
6a9d361
..
7d34100
100644
(file)
--- a/
editor.coffee
+++ b/
editor.coffee
@@
-17,11
+17,6
@@
# SETTINGS
overlay_padding = 10
# SETTINGS
overlay_padding = 10
-TYPE_TAG = peach_parser.TYPE_TAG
-TYPE_TEXT = peach_parser.TYPE_TEXT
-TYPE_COMMENT = peach_parser.TYPE_COMMENT
-TYPE_DOCTYPE = peach_parser.TYPE_DOCTYPE
-
timeout = (ms, cb) -> return setTimeout cb, ms
debug_dot_at = (doc, x, y) ->
timeout = (ms, cb) -> return setTimeout cb, ms
debug_dot_at = (doc, x, y) ->
@@
-281,10
+276,10
@@
instantiate_tree = (tree, parent) ->
remove = []
for c, i in tree
switch c.type
remove = []
for c, i in tree
switch c.type
- when TYPE_TEXT
+ when 'text'
c.el = parent.ownerDocument.createTextNode c.text
parent.appendChild c.el
c.el = parent.ownerDocument.createTextNode c.text
parent.appendChild c.el
- when TYPE_TAG
+ when 'tag'
if c.name in ['script', 'object', 'iframe', 'link']
# TODO put placeholders instead
remove.unshift i
if c.name in ['script', 'object', 'iframe', 'link']
# TODO put placeholders instead
remove.unshift i
@@
-310,7
+305,7
@@
traverse_tree = (tree, cb) ->
return done
find_next_cursor_position = (tree, n, i) ->
return done
find_next_cursor_position = (tree, n, i) ->
- if n.type is TYPE_TEXT and n.text.length > i
+ if n.type is 'text' and n.text.length > i
orig_xyh = cursor_to_xyh n, i
unless orig_xyh?
console.log "ERROR: couldn't find xy for current cursor location"
orig_xyh = cursor_to_xyh n, i
unless orig_xyh?
console.log "ERROR: couldn't find xy for current cursor location"
@@
-323,7
+318,7
@@
find_next_cursor_position = (tree, n, i) ->
state_before = true
found = null
traverse_tree tree, (node, state) ->
state_before = true
found = null
traverse_tree tree, (node, state) ->
- if node.type is TYPE_TEXT and state_before is false
+ if node.type is 'text' and state_before is false
if cursor_to_xyh(node, 0)?
found = node
return true
if cursor_to_xyh(node, 0)?
found = node
return true
@@
-335,7
+330,7
@@
find_next_cursor_position = (tree, n, i) ->
return null
find_prev_cursor_position = (tree, n, i) ->
return null
find_prev_cursor_position = (tree, n, i) ->
- if n? and n.type is TYPE_TEXT and i > 0
+ if n? and n.type is 'text' and i > 0
orig_xyh = cursor_to_xyh n, i
unless orig_xyh?
console.log "ERROR: couldn't find xy for current cursor location"
orig_xyh = cursor_to_xyh n, i
unless orig_xyh?
console.log "ERROR: couldn't find xy for current cursor location"
@@
-349,7
+344,7
@@
find_prev_cursor_position = (tree, n, i) ->
found_prev = n?
found = null
traverse_tree tree, (node) ->
found_prev = n?
found = null
traverse_tree tree, (node) ->
- if node.type is TYPE_TEXT
+ if node.type is 'text'
if node is n
if found_prev?
found = found_prev
if node is n
if found_prev?
found = found_prev
@@
-364,7
+359,7
@@
find_prev_cursor_position = (tree, n, i) ->
find_loc_cursor_position = (tree, loc) ->
for c in tree
find_loc_cursor_position = (tree, loc) ->
for c in tree
- if c.type is TYPE_TAG or c.type is TYPE_TEXT
+ if c.type is 'tag' or c.type is 'text'
bounds = get_el_bounds c.el
continue if loc.x < bounds.x
continue if loc.x > bounds.x + bounds.w
bounds = get_el_bounds c.el
continue if loc.x < bounds.x
continue if loc.x > bounds.x + bounds.w
@@
-373,7
+368,7
@@
find_loc_cursor_position = (tree, loc) ->
if c.children.length
ret = find_loc_cursor_position c.children, loc
return ret if ret?
if c.children.length
ret = find_loc_cursor_position c.children, loc
return ret if ret?
- if c.type is TYPE_TEXT
+ if c.type is 'text'
# click is within bounding box that contains all text.
return [c, 0] if c.text.length is 0
before_i = 0
# click is within bounding box that contains all text.
return [c, 0] if c.text.length is 0
before_i = 0
@@
-429,14
+424,14
@@
is_space = (chr) ->
tree_remove_empty_text_nodes = (tree) ->
empties = []
traverse_tree tree, (n) ->
tree_remove_empty_text_nodes = (tree) ->
empties = []
traverse_tree tree, (n) ->
- if n.type is TYPE_TEXT
+ if n.type is 'text'
if n.text.length is 0
empties.unshift n
return false
for n in empties
# don't completely empty the tree
if tree.length is 1
if n.text.length is 0
empties.unshift n
return false
for n in empties
# don't completely empty the tree
if tree.length is 1
- if tree[0].type is TYPE_TEXT
+ if tree[0].type is 'text'
console.log "oop, leaving a blank node because it's the only thing"
return
n.el.parentNode.removeChild n.el
console.log "oop, leaving a blank node because it's the only thing"
return
n.el.parentNode.removeChild n.el
@@
-458,13
+453,13
@@
tree_dedup_space = (tree) ->
iterate = (tree, cb) ->
for n in tree
iterate = (tree, cb) ->
for n in tree
- if n.type is TYPE_TEXT
+ if n.type is 'text'
i = 0
while i < n.text.length # don't foreach, cb might remove chars
advance = cb n, i
if advance
i += 1
i = 0
while i < n.text.length # don't foreach, cb might remove chars
advance = cb n, i
if advance
i += 1
- if n.type is TYPE_TAG
+ if n.type is 'tag'
block = is_display_block n.el
if block
cb null
block = is_display_block n.el
if block
cb null
@@
-788,7
+783,7
@@
class PeachHTML5Editor
prev_bounds = x: 0, y: 0, w: 0, h: 0
alpha = 0.1
while n?.el?
prev_bounds = x: 0, y: 0, w: 0, h: 0
alpha = 0.1
while n?.el?
- if n.type is TYPE_TEXT
+ if n.type is 'text'
n = n.parent
continue
bounds = get_el_bounds n.el
n = n.parent
continue
bounds = get_el_bounds n.el
@@
-814,7
+809,7
@@
class PeachHTML5Editor
inner_flags = want_nl: true
is_br = false
switch n.type
inner_flags = want_nl: true
is_br = false
switch n.type
- when TYPE_TAG
+ when 'tag'
if n.name is 'br'
is_br = true
is_text = false
if n.name is 'br'
is_br = true
is_text = false
@@
-857,12
+852,12
@@
class PeachHTML5Editor
inner_flags.block = true
is_block = true
in_flow_block = in_flow
inner_flags.block = true
is_block = true
in_flow_block = in_flow
- when TYPE_TEXT
+ when 'text'
is_text = true
is_block = false
in_flow = true
in_flow_block = false
is_text = true
is_block = false
in_flow = true
in_flow_block = false
- else # TYPE_COMMENT, TYPE_DOCTYPE
+ else # 'comment', 'doctype'
is_text = false
is_block = false
in_flow = false
is_text = false
is_block = false
in_flow = false
@@
-875,7
+870,7
@@
class PeachHTML5Editor
ret += "\n"
ret += indent
switch n.type
ret += "\n"
ret += indent
switch n.type
- when TYPE_TAG
+ when 'tag'
ret += '<' + n.name
attr_keys = []
for k of n.attrs
ret += '<' + n.name
attr_keys = []
for k of n.attrs
@@
-894,11
+889,11
@@
class PeachHTML5Editor
if n.children.length
ret += @pretty_html n.children, next_indent, inner_flags
ret += "</#{n.name}>"
if n.children.length
ret += @pretty_html n.children, next_indent, inner_flags
ret += "</#{n.name}>"
- when TYPE_TEXT
+ when 'text'
ret += enc_text n.text
ret += enc_text n.text
- when TYPE_COMMENT
+ when 'comment'
ret += "<!--#{n.text}-->" # TODO encode?
ret += "<!--#{n.text}-->" # TODO encode?
- when TYPE_DOCTYPE
+ when 'doctype'
ret += "<!DOCTYPE #{n.name}"
if n.public_identifier? and n.public_identifier.length > 0
ret += " \"#{n.public_identifier}\""
ret += "<!DOCTYPE #{n.name}"
if n.public_identifier? and n.public_identifier.length > 0
ret += " \"#{n.public_identifier}\""