Class: Yard2steep::Type

Inherits:
Object
  • Object
show all
Defined in:
lib/yard2steep/type.rb,
lib/yard2steep/type/ast.rb,
lib/yard2steep/type/parser.rb

Defined Under Namespace

Classes: AnyType, ArrayType, HashType, NormalType, Parser, TypeBase, UnionType

Constant Summary collapse

S_RE =
/[\s\t]*/
TOKENS =
/
  [<>(),|={}]|[\w:]+
/x

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text) ⇒ Type

Returns a new instance of Type.

Parameters:

  • text (String)


14
15
16
# File 'lib/yard2steep/type.rb', line 14

def initialize(text)
  @text = text
end

Class Method Details

.translate(text) ⇒ String

Parameters:

  • text (String)

Returns:

  • (String)


9
10
11
# File 'lib/yard2steep/type.rb', line 9

def self.translate(text)
  Type.new(text).translate
end

Instance Method Details

#tokens(str) ⇒ Array<String>

Parameters:

  • str (String)

Returns:

  • (Array<String>)


32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/yard2steep/type.rb', line 32

def tokens(str)
  r = []
  s = StringScanner.new(str)
  while true
    s.scan(S_RE)
    break if s.eos?
    if t = s.scan(TOKENS)
      r.push(t)
    else
      raise "token must exist!"
    end
  end
  r
end

#translateString

Returns:

  • (String)


19
20
21
22
23
# File 'lib/yard2steep/type.rb', line 19

def translate
  tokens = tokens(@text)
  ast = Parser.parse(tokens)
  ast.to_s
end