模块 RDoc::TokenStream
TokenStream
是一个标记列表,在解析某个实体(例如方法)期间收集。实体通过在词法分析器中注册来填充这些流。任何类都可以通过包含 TokenStream
来收集标记。从外部,您可以通过调用 start_collecting_tokens
方法,然后调用 add_token
和 pop_token 来使用这样的对象。
公共类方法
to_html(token_stream) 点击切换源代码
将 token_stream
转换为 HTML,使用 <span>
元素包裹各种标记。某些标记类型被包裹在具有给定类名称的 span 中。其他标记类型不包裹在 span 中。
# File rdoc/token_stream.rb, line 16 def self.to_html token_stream starting_title = false token_stream.map do |t| next unless t style = case t[:kind] when :on_const then 'ruby-constant' when :on_kw then 'ruby-keyword' when :on_ivar then 'ruby-ivar' when :on_cvar then 'ruby-identifier' when :on_gvar then 'ruby-identifier' when '=' != t[:text] && :on_op then 'ruby-operator' when :on_tlambda then 'ruby-operator' when :on_ident then 'ruby-identifier' when :on_label then 'ruby-value' when :on_backref, :on_dstring then 'ruby-node' when :on_comment then 'ruby-comment' when :on_embdoc then 'ruby-comment' when :on_regexp then 'ruby-regexp' when :on_tstring then 'ruby-string' when :on_int, :on_float, :on_rational, :on_imaginary, :on_heredoc, :on_symbol, :on_CHAR then 'ruby-value' when :on_heredoc_beg, :on_heredoc_end then 'ruby-identifier' end comment_with_nl = false if :on_comment == t[:kind] or :on_embdoc == t[:kind] or :on_heredoc_end == t[:kind] comment_with_nl = true if "\n" == t[:text][-1] text = t[:text].rstrip else text = t[:text] end if :on_ident == t[:kind] && starting_title starting_title = false style = 'ruby-identifier ruby-title' end if :on_kw == t[:kind] and 'def' == t[:text] starting_title = true end text = CGI.escapeHTML text if style then "<span class=\"#{style}\">#{text}</span>#{"\n" if comment_with_nl}" else text end end.join end
公共实例方法
add_token(token) 点击切换源代码
将一个 token
添加到收集的标记中
# File rdoc/token_stream.rb, line 84 def add_token(token) @token_stream.push(token) end
add_tokens(tokens) 点击切换源代码
将 tokens
添加到收集的标记中
# File rdoc/token_stream.rb, line 77 def add_tokens(tokens) @token_stream.concat(tokens) end
collect_tokens() 点击切换源代码
开始收集标记
# File rdoc/token_stream.rb, line 91 def collect_tokens @token_stream = [] end
pop_token() 点击切换源代码
从收集的标记中删除最后一个标记
# File rdoc/token_stream.rb, line 100 def pop_token @token_stream.pop end
token_stream() 点击切换源代码
当前标记流
# File rdoc/token_stream.rb, line 107 def token_stream @token_stream end
tokens_to_s() 点击切换源代码
返回标记流的字符串表示形式
# File rdoc/token_stream.rb, line 114 def tokens_to_s (token_stream or return '').compact.map { |token| token[:text] }.join '' end