Class: Curly::Scanner
- Inherits:
-
Object
- Object
- Curly::Scanner
- Defined in:
- lib/curly/scanner.rb
Overview
Scans Curly templates for tokens.
The Scanner goes through the template piece by piece, extracting tokens until the end of the template is reached.
Constant Summary collapse
- CURLY_START =
/\{\{/
- CURLY_END =
/\}\}/
- ESCAPED_CURLY_START =
/\{\{\{/
- COMMENT_MARKER =
/!/
- CONTEXT_BLOCK_MARKER =
/@/
- CONDITIONAL_BLOCK_MARKER =
/#/
- INVERSE_BLOCK_MARKER =
/\^/
- COLLECTION_BLOCK_MARKER =
/\*/
- END_BLOCK_MARKER =
/\//
Class Method Summary collapse
-
.scan(source) ⇒ Object
Scans a Curly template for tokens.
Instance Method Summary collapse
-
#initialize(source) ⇒ Scanner
constructor
A new instance of Scanner.
- #scan ⇒ Object
Constructor Details
#initialize(source) ⇒ Scanner
Returns a new instance of Scanner.
40 41 42 |
# File 'lib/curly/scanner.rb', line 40 def initialize(source) @scanner = StringScanner.new(source) end |
Class Method Details
.scan(source) ⇒ Object
Scans a Curly template for tokens.
source - The String source of the template.
Examples
Curly::Scanner.scan("hello {name}!") #=> [[:text, "hello "], [:component, "name"], [:text, "!"]]
Returns an Array of type/value pairs representing the tokens in the template.
36 37 38 |
# File 'lib/curly/scanner.rb', line 36 def self.scan(source) new(source).scan end |
Instance Method Details
#scan ⇒ Object
44 45 46 47 48 |
# File 'lib/curly/scanner.rb', line 44 def scan tokens = [] tokens << scan_token until @scanner.eos? tokens end |