diff --git a/lib/rouge/demos/gdt b/lib/rouge/demos/gdt new file mode 100644 index 0000000000..6cdc759f21 --- /dev/null +++ b/lib/rouge/demos/gdt @@ -0,0 +1,11 @@ +01380006301 +0178315EKG_TYP1 +0178316PRX_SYS1 +014921802.00 +01330000815 +0123101Doe +0133102Jane +017310301011990 +01031102 +0123622158 +0123623061 \ No newline at end of file diff --git a/lib/rouge/lexers/gdt.rb b/lib/rouge/lexers/gdt.rb new file mode 100644 index 0000000000..4c84fb403a --- /dev/null +++ b/lib/rouge/lexers/gdt.rb @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class GDT < RegexLexer + title 'GDT' + desc "Geräte-Daten-Träger (Device Data Carrier)" + tag 'gdt' + filenames '*.gdt' + mimetypes 'text/x-gdt' + + state :root do + rule %r/[0-9]{3}/, Text, :length + end + + state :length do + rule %r/(6227|6228)/, Keyword, :comment + rule %r/8000/, Keyword, :type + rule %r/[0-9]{4}/, Keyword, :content + rule %r/\s+/, Text::Whitespace + end + + state :content do + rule %r/.*$\r?\n?/, Literal, :root + end + + state :comment do + rule %r/.*$\r?\n?/, Comment, :root + end + + state :type do + rule %r/.*$\r?\n?/, Name::Class, :root + end + + state :whitespace do + rule %r/\s+/, Text::Whitespace + end + end + end +end diff --git a/spec/lexers/gdt_spec.rb b/spec/lexers/gdt_spec.rb new file mode 100644 index 0000000000..d23508c296 --- /dev/null +++ b/spec/lexers/gdt_spec.rb @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +describe Rouge::Lexers::GDT do + let(:subject) { Rouge::Lexers::GDT.new } + + describe 'guessing' do + include Support::Guessing + + it 'guesses by filename' do + assert_guess :filename => 'foo.gdt' + end + + it 'guesses by mimetype' do + assert_guess :mimetype => 'text/x-gdt' + end + end +end diff --git a/spec/visual/samples/gdt b/spec/visual/samples/gdt new file mode 100644 index 0000000000..c1b78f2fbb --- /dev/null +++ b/spec/visual/samples/gdt @@ -0,0 +1,19 @@ +01380006310 +0178315PRX_SYS1 +0178316KKX_SYS1 +014921802.10 +014300004711 +0123101Doe +0133102John +017310331121999 +01031101 +0123622180 +0123623085 +017620031122023 +0166227Comment +0286228Blood pressure test +0286228------------------- +0236228Ps[mmHg] 143 +0236228Pd[mmHg] 92 +0236228HF[P/min] 71 +0096228 \ No newline at end of file