From 150ec4ad4fb3056f9aa147b0ef6ac96e40572b33 Mon Sep 17 00:00:00 2001 From: Lixfeld Date: Mon, 19 Aug 2024 21:28:15 +0200 Subject: [PATCH 1/3] Add gdt sample files --- lib/rouge/demos/gdt | 11 +++++++++++ spec/visual/samples/gdt | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 lib/rouge/demos/gdt create mode 100644 spec/visual/samples/gdt 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/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 From 2ef6b7a8d699c843e7f4a58850d1cf28468e49ee Mon Sep 17 00:00:00 2001 From: Lixfeld Date: Mon, 19 Aug 2024 21:36:58 +0200 Subject: [PATCH 2/3] Add gdt lexer --- lib/rouge/lexers/gdt.rb | 41 +++++++++++++++++++++++++++++++++++++++++ spec/lexers/gdt_spec.rb | 18 ++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 lib/rouge/lexers/gdt.rb create mode 100644 spec/lexers/gdt_spec.rb diff --git a/lib/rouge/lexers/gdt.rb b/lib/rouge/lexers/gdt.rb new file mode 100644 index 0000000000..3cffc3ade1 --- /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(.*?$), Literal, :root + end + + state :comment do + rule %r(.*?$), Comment, :root + end + + state :type do + rule %r(.*?$), 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 From f7aea2a53a8fc919cfbae6a690ff6f06c57b5520 Mon Sep 17 00:00:00 2001 From: Lixfeld Date: Tue, 20 Aug 2024 08:10:07 +0200 Subject: [PATCH 3/3] Handle end of line (CR/LF) --- lib/rouge/lexers/gdt.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/rouge/lexers/gdt.rb b/lib/rouge/lexers/gdt.rb index 3cffc3ade1..4c84fb403a 100644 --- a/lib/rouge/lexers/gdt.rb +++ b/lib/rouge/lexers/gdt.rb @@ -22,15 +22,15 @@ class GDT < RegexLexer end state :content do - rule %r(.*?$), Literal, :root + rule %r/.*$\r?\n?/, Literal, :root end state :comment do - rule %r(.*?$), Comment, :root + rule %r/.*$\r?\n?/, Comment, :root end state :type do - rule %r(.*?$), Name::Class, :root + rule %r/.*$\r?\n?/, Name::Class, :root end state :whitespace do