beid 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Beid
4
+ VERSION = "0.1.0"
5
+ end
data/lib/beid.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "beid/version"
4
+ require_relative "beid/node"
5
+ require_relative "beid/directive"
6
+ require_relative "beid/inline_parser"
7
+ require_relative "beid/parser"
8
+ require_relative "beid/document"
9
+ require_relative "beid/editing"
10
+
11
+ module Beid
12
+ class Error < StandardError; end
13
+ end
data/sig/beid.rbs ADDED
@@ -0,0 +1,51 @@
1
+ module Beid
2
+ VERSION: String
3
+
4
+ class Error < StandardError
5
+ end
6
+
7
+ class Node
8
+ attr_reader type: Symbol
9
+ attr_reader attributes: Hash[Symbol, untyped]
10
+ attr_reader children: Array[Node]
11
+ attr_reader range: Range[Integer]
12
+ attr_reader marker: String?
13
+
14
+ def initialize: (type: Symbol, ?attributes: Hash[Symbol, untyped], ?children: Array[Node], range: Range[Integer], ?marker: String?) -> void
15
+ def text: () -> String?
16
+ end
17
+
18
+ class Document
19
+ attr_reader source: String
20
+ attr_reader root: Node
21
+ attr_reader front_matter: String?
22
+ attr_reader options: Hash[Symbol, bool]
23
+ attr_reader diagnostics: Array[String]
24
+
25
+ def self.parse: (String text, ?gfm: bool, ?front_matter: bool) -> Document
26
+ def nodes_at: (Integer offset) -> Array[Node]
27
+ def node_at: (Integer offset) -> Node?
28
+ def range_of: (Node node) -> Range[Integer]
29
+ def position_at: (Integer offset) -> [ Integer, Integer ]
30
+ def utf16_position_at: (Integer offset) -> [ Integer, Integer ]
31
+ def valid?: () -> bool
32
+ def to_s: () -> String
33
+ def include_node?: (Node node) -> bool
34
+ end
35
+
36
+ module Directive
37
+ def self.parse: (String html_comment) -> Hash[String, String]?
38
+ def self.render: (Hash[String, String] values) -> String
39
+ end
40
+
41
+ module Editing
42
+ def self.replace: (Document document, Node node, String markdown) -> Document
43
+ def self.replace_text: (Document document, Node node, String text) -> Document
44
+ def self.insert_after: (Document document, Node node, String markdown) -> Document
45
+ def self.insert_before: (Document document, Node node, String markdown) -> Document
46
+ def self.remove: (Document document, Node node) -> Document
47
+ def self.set_attribute: (Document document, Node node, String | Symbol key, untyped value) -> Document
48
+ def self.set_directive: (Document document, Node node, String | Symbol key, String value) -> Document
49
+ def self.move: (Document document, Node node, ?before: Node?, ?after: Node?) -> Document
50
+ end
51
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: beid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yudai Takada
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: Parse Markdown into source-positioned nodes and edit byte ranges without
13
+ rewriting untouched syntax.
14
+ email:
15
+ - t.yudai92@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - CHANGELOG.md
21
+ - LICENSE.txt
22
+ - README.md
23
+ - docs/adr/001-byte-range-edits.md
24
+ - docs/adr/002-html-comment-directives.md
25
+ - lib/beid.rb
26
+ - lib/beid/directive.rb
27
+ - lib/beid/document.rb
28
+ - lib/beid/editing.rb
29
+ - lib/beid/inline_parser.rb
30
+ - lib/beid/node.rb
31
+ - lib/beid/parser.rb
32
+ - lib/beid/version.rb
33
+ - sig/beid.rbs
34
+ homepage: https://github.com/noxdea/beid
35
+ licenses:
36
+ - MIT
37
+ metadata:
38
+ allowed_push_host: https://rubygems.org
39
+ homepage_uri: https://github.com/noxdea/beid
40
+ source_code_uri: https://github.com/noxdea/beid/tree/main
41
+ changelog_uri: https://github.com/noxdea/beid/blob/main/CHANGELOG.md
42
+ rubygems_mfa_required: 'true'
43
+ rdoc_options: []
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '3.1'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements: []
57
+ rubygems_version: 4.0.16
58
+ specification_version: 4
59
+ summary: Source-preserving Markdown parser and editor
60
+ test_files: []