Sha256: beb81dbbe4982967b3c73e3b7663d0ee9fc32aba7be52af530cc71f8dd38fc27
Contents?: true
Size: 1.93 KB
Versions: 2
Compression:
Stored size: 1.93 KB
Contents
# -*- coding: utf-8 -*- # module Rouge module Lexers class Gobstones < RegexLexer title 'Gobstones' desc 'Gobstones language' tag 'gobstones' filenames '*.gbs' def self.analyze_text(_text) 0.3 end reserved = %w(program interactive is return record field variant case if then else switch to repeat while foreach in match) atoms = %w(False True Verde Rojo Vermelho Azul Negro Preto Norte Sur Sul Este Leste Oeste) state :comments do def comment_between(start, finish) /#{start}.*?#{finish}/m end rule comment_between('{-', '-}'), Comment::Multiline rule comment_between('\/\*', '\*\/'), Comment::Multiline rule comment_between('"""', '"""'), Comment::Multiline rule /((?<!<)-(?!>)|#|\/).*$/, Comment::Single end state :root do def any(words) /#{words.map { |word| word.concat('\\b') }.join('|')}/ end mixin :comments rule /\s+/, Text::Whitespace rule any(reserved), Keyword::Reserved rule any(atoms), Literal rule /(type)(\s+)(\w+)/ do |m| groups Keyword::Reserved, Text::Whitespace, Keyword::Type end mixin :functions mixin :symbols rule /\d+/, Literal::Number rule /".+?"/, Literal::String end state :functions do rule /(procedure|function)(\s+)(\w+)/ do groups Keyword::Reserved, Text::Whitespace, Name::Function end rule /([a-zA-Z][a-zA-Z'_0-9]*)(\()/ do |m| groups Name::Function, Text end rule /([a-z][a-zA-Z'_0-9]*)/, Name::Variable end state :symbols do rule /:=|\.\.|\+\+|\.|_|->|<-/, Operator rule /<=|<|>=|>|==|=/, Operator rule /\|\||&&|\+|\*|-|\^/, Operator rule /\(|\)|\{|\}/, Text rule /,|;|:|\||\[|\]/, Text end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mumukit-content-type-1.3.0 | lib/mumukit/content_type/gobstones.rb |
mumukit-content-type-1.2.0 | lib/mumukit/content_type/gobstones.rb |