"
-
- when :inline_spoiler
- output << ""
-
- when :block_spoiler
- output << ""
-
- when :block_quote
- output << ""
-
- else
- raise SyntaxError.new("Invalid element #{obj}")
- end
- end
- end
-
- def self.parse(s)
- stack = []
- dstack = []
- output = StringIO.new
- data = s + "\0"
- eof = data.size
- flags = {}
-
-
-# line 560 "d_text_ragel.rb"
-begin
- p ||= 0
- pe ||= data.length
- cs = dtext_start
- top = 0
- ts = nil
- te = nil
- act = 0
-end
-
-# line 417 "d_text_ragel.rl"
-
-# line 573 "d_text_ragel.rb"
-begin
- _klen, _trans, _keys, _acts, _nacts = nil
- _goto_level = 0
- _resume = 10
- _eof_trans = 15
- _again = 20
- _test_eof = 30
- _out = 40
- while true
- _trigger_goto = false
- if _goto_level <= 0
- if p == pe
- _goto_level = _test_eof
- next
- end
- end
- if _goto_level <= _resume
- _acts = _dtext_from_state_actions[cs]
- _nacts = _dtext_actions[_acts]
- _acts += 1
- while _nacts > 0
- _nacts -= 1
- _acts += 1
- case _dtext_actions[_acts - 1]
- when 5 then
-# line 1 "NONE"
- begin
-ts = p
- end
-# line 603 "d_text_ragel.rb"
- end # from state action switch
- end
- if _trigger_goto
- next
- end
- _keys = _dtext_key_offsets[cs]
- _trans = _dtext_index_offsets[cs]
- _klen = _dtext_single_lengths[cs]
- _break_match = false
-
- begin
- if _klen > 0
- _lower = _keys
- _upper = _keys + _klen - 1
-
- loop do
- break if _upper < _lower
- _mid = _lower + ( (_upper - _lower) >> 1 )
-
- if data[p].ord < _dtext_trans_keys[_mid]
- _upper = _mid - 1
- elsif data[p].ord > _dtext_trans_keys[_mid]
- _lower = _mid + 1
- else
- _trans += (_mid - _keys)
- _break_match = true
- break
- end
- end # loop
- break if _break_match
- _keys += _klen
- _trans += _klen
- end
- _klen = _dtext_range_lengths[cs]
- if _klen > 0
- _lower = _keys
- _upper = _keys + (_klen << 1) - 2
- loop do
- break if _upper < _lower
- _mid = _lower + (((_upper-_lower) >> 1) & ~1)
- if data[p].ord < _dtext_trans_keys[_mid]
- _upper = _mid - 2
- elsif data[p].ord > _dtext_trans_keys[_mid+1]
- _lower = _mid + 2
- else
- _trans += ((_mid - _keys) >> 1)
- _break_match = true
- break
- end
- end # loop
- break if _break_match
- _trans += _klen
- end
- end while false
- end
- if _goto_level <= _eof_trans
- cs = _dtext_trans_targs[_trans]
- if _dtext_trans_actions[_trans] != 0
- _acts = _dtext_trans_actions[_trans]
- _nacts = _dtext_actions[_acts]
- _acts += 1
- while _nacts > 0
- _nacts -= 1
- _acts += 1
- case _dtext_actions[_acts - 1]
-when 0 then
-# line 14 "d_text_ragel.rl"
- begin
-
- a1 = p
- end
-when 1 then
-# line 18 "d_text_ragel.rl"
- begin
-
- a2 = p
- end
-when 2 then
-# line 22 "d_text_ragel.rl"
- begin
-
- b1 = p
- end
-when 3 then
-# line 26 "d_text_ragel.rl"
- begin
-
- b2 = p
- end
-when 6 then
-# line 1 "NONE"
- begin
-te = p+1
- end
-when 7 then
-# line 149 "d_text_ragel.rl"
- begin
-act = 18; end
-when 8 then
-# line 154 "d_text_ragel.rl"
- begin
-act = 19; end
-when 9 then
-# line 261 "d_text_ragel.rl"
- begin
-act = 37; end
-when 10 then
-# line 266 "d_text_ragel.rl"
- begin
-act = 38; end
-when 11 then
-# line 115 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- tags = data[a1..a2]
- output << '' + h(tags) + ''
- end
- end
-when 12 then
-# line 120 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- name = data[a1..a2]
- title = name.tr(" ", "_").downcase
- output << '' + h(name) + ''
- end
- end
-when 13 then
-# line 126 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- name = data[b1..b2]
- title = data[a1..a2].tr(" ", "_").downcase
- output << '' + h(name) + ''
- end
- end
-when 14 then
-# line 138 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- text = data[a1..a2]
- url = data[b1..b2]
- output << '' + text + ''
- end
- end
-when 15 then
-# line 159 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- dstack << :b
- output << ''
- end
- end
-when 16 then
-# line 164 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- raise SyntaxError.new("invalid [/b] tag") unless dstack[-1] == :b
- dstack.pop
- output << ""
- end
- end
-when 17 then
-# line 170 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- dstack << :i
- output << ''
- end
- end
-when 18 then
-# line 175 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- raise ParseError.new("invalid [/i] tag") unless dstack[-1] == :i
- dstack.pop
- output << ""
- end
- end
-when 19 then
-# line 181 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- dstack << :s
- output << ""
- end
- end
-when 20 then
-# line 186 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- raise ParseError.new("invalid [/s] tag") unless dstack[-1] == :s
- dstack.pop
- output << ""
- end
- end
-when 21 then
-# line 192 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- dstack << :u
- output << ""
- end
- end
-when 22 then
-# line 197 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- raise ParseError.new("invalid [/u] tag") unless dstack[-1] == :u
- dstack.pop
- output << ""
- end
- end
-when 23 then
-# line 203 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- dstack << :tn
- output << '
'
- end
- end
-when 24 then
-# line 208 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- raise ParseError.new("invalid [/tn] tag") unless dstack[-1] == :tn
- dstack.pop
- output << "
"
- end
- end
-when 25 then
-# line 214 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- raise ParseError.new("invalid [/quote] tag") unless dstack[-1] == :quote
- dstack.pop
- output << ""
- begin
- top -= 1
- cs = stack[top]
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 26 then
-# line 221 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- dstack << :inline_spoiler
- output << ''
- end
- end
-when 27 then
-# line 226 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- if dstack[-1] == :inline_spoiler
- output << ""
- dstack.pop
- elsif dstack[-1] == :block_spoiler
- output << ""
- dstack.pop
- begin
- top -= 1
- cs = stack[top]
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- else
- raise SyntaxError.new("invalid [/spoiler] tag")
- end
- end
- end
-when 28 then
-# line 239 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- if dstack[-1] == :expand
- output << ''
- dstack.pop
- begin
- top -= 1
- cs = stack[top]
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- else
- raise SyntaxError.new("invalid [/expand] tag")
- end
- end
- end
-when 29 then
-# line 249 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- output << "&"
- end
- end
-when 30 then
-# line 253 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- output << "<"
- end
- end
-when 31 then
-# line 257 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- output << ">"
- end
- end
-when 32 then
-# line 270 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- p = p - 1;
- begin
- top -= 1
- cs = stack[top]
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 33 then
-# line 275 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- output << data[p]
- end
- end
-when 34 then
-# line 58 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- output << 'post #' + id + ''
- end
- end
-when 35 then
-# line 63 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- output << 'forum #' + id + ''
- end
- end
-when 36 then
-# line 68 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- output << 'topic #' + id + ''
- end
- end
-when 37 then
-# line 73 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- page = data[b1..b2]
- output << 'topic #' + id + '/p' + page + ''
- end
- end
-when 38 then
-# line 79 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- output << 'comment #' + id + ''
- end
- end
-when 39 then
-# line 84 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- output << 'pool #' + id + ''
- end
- end
-when 40 then
-# line 89 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- output << 'user #' + id + ''
- end
- end
-when 41 then
-# line 94 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- output << 'artist #' + id + ''
- end
- end
-when 42 then
-# line 99 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- output << 'issue #' + id + ''
- end
- end
-when 43 then
-# line 104 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- output << 'pixiv #' + id + ''
- end
- end
-when 44 then
-# line 109 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- id = data[a1..a2]
- page = data[b1..b2]
- output << 'pixiv #' + id + '/p' + page + ''
- end
- end
-when 45 then
-# line 132 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- text = data[a1..a2]
- url = data[b1..b2]
- output << '' + text + ''
- end
- end
-when 46 then
-# line 144 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- url = data[ts...te]
- output << '' + url + ''
- end
- end
-when 47 then
-# line 266 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- output << " "
- end
- end
-when 48 then
-# line 275 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- output << data[p]
- end
- end
-when 49 then
-# line 68 "d_text_ragel.rl"
- begin
- begin p = ((te))-1; end
- begin
- id = data[a1..a2]
- output << 'topic #' + id + ''
- end
- end
-when 50 then
-# line 104 "d_text_ragel.rl"
- begin
- begin p = ((te))-1; end
- begin
- id = data[a1..a2]
- output << 'pixiv #' + id + ''
- end
- end
-when 51 then
-# line 275 "d_text_ragel.rl"
- begin
- begin p = ((te))-1; end
- begin
- output << data[p]
- end
- end
-when 52 then
-# line 1 "NONE"
- begin
- case act
- when 18 then
- begin begin p = ((te))-1; end
-
- name = data[ts+1...te-1]
- output << '@' + h(name) + '' + data[p]
- end
- when 19 then
- begin begin p = ((te))-1; end
-
- name = data[ts+1...te]
- output << '@' + h(name) + ''
- end
- when 37 then
- begin begin p = ((te))-1; end
-
- output << close_stack(output, dstack)
- begin
- top -= 1
- cs = stack[top]
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- when 38 then
- begin begin p = ((te))-1; end
-
- output << " "
- end
-end
- end
-when 53 then
-# line 291 "d_text_ragel.rl"
- begin
-act = 42; end
-when 54 then
-# line 300 "d_text_ragel.rl"
- begin
-act = 44; end
-when 55 then
-# line 281 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- if dstack[-1] == :block_code
- dstack.pop
- output << ""
- else
- raise SyntaxError.new("invalid [/code] tag")
- end
- begin
- top -= 1
- cs = stack[top]
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 56 then
-# line 296 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- output << "["
- end
- end
-when 57 then
-# line 296 "d_text_ragel.rl"
- begin
- begin p = ((te))-1; end
- begin
- output << "["
- end
- end
-when 58 then
-# line 1 "NONE"
- begin
- case act
- when 42 then
- begin begin p = ((te))-1; end
-
- p = p - 1;
- begin
- top -= 1
- cs = stack[top]
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- when 44 then
- begin begin p = ((te))-1; end
-
- output << data[ts...te]
- end
-end
- end
-when 59 then
-# line 310 "d_text_ragel.rl"
- begin
-act = 45; end
-when 60 then
-# line 363 "d_text_ragel.rl"
- begin
-act = 53; end
-when 61 then
-# line 321 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- output << "
"
- dstack << :quote
- begin
- stack[top] = cs
- top+= 1
- cs = 167
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 62 then
-# line 327 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- output << '
'
- dstack << :block_spoiler
- begin
- stack[top] = cs
- top+= 1
- cs = 167
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 63 then
-# line 333 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- output << '
'
- dstack << :block_code
- begin
- stack[top] = cs
- top+= 1
- cs = 196
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 64 then
-# line 339 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- output << '
'
- output << '
'
- output << '
'
- dstack << :expand
- begin
- stack[top] = cs
- top+= 1
- cs = 167
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 65 then
-# line 347 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- msg = data[a1..a2]
- output <<'
'
- output << '' + h(msg) + ''
- output << '
'
- output << '
'
- dstack << :expand
- begin
- stack[top] = cs
- top+= 1
- cs = 167
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 66 then
-# line 357 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- close_stack(output, dstack)
- end
- end
-when 67 then
-# line 361 "d_text_ragel.rl"
- begin
-te = p+1
- end
-when 68 then
-# line 363 "d_text_ragel.rl"
- begin
-te = p+1
- begin
- p = p - 1;
-
- if dstack.empty?
- output << "
"
- dstack << :p
- end
-
- begin
- stack[top] = cs
- top+= 1
- cs = 167
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 69 then
-# line 310 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- if flags[:inline]
- header = "6"
- else
- header = data[a1..a2]
- end
-
- text = data[b1..b2]
- output << '' + h(text) + ''
- end
- end
-when 70 then
-# line 361 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; end
-when 71 then
-# line 363 "d_text_ragel.rl"
- begin
-te = p
-p = p - 1; begin
- p = p - 1;
-
- if dstack.empty?
- output << "
"
- dstack << :p
- end
-
- begin
- stack[top] = cs
- top+= 1
- cs = 167
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 72 then
-# line 363 "d_text_ragel.rl"
- begin
- begin p = ((te))-1; end
- begin
- p = p - 1;
-
- if dstack.empty?
- output << "
"
- dstack << :p
- end
-
- begin
- stack[top] = cs
- top+= 1
- cs = 167
- _trigger_goto = true
- _goto_level = _again
- break
- end
-
- end
- end
-when 73 then
-# line 1 "NONE"
- begin
- case act
- when 45 then
- begin begin p = ((te))-1; end
-
- if flags[:inline]
- header = "6"
- else
- header = data[a1..a2]
- end
-
- text = data[b1..b2]
- output << '' + h(text) + ''
- end
- when 53 then
- begin begin p = ((te))-1; end
-
- p = p - 1;
-
- if dstack.empty?
- output << "