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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +52 -0
- data/docs/adr/001-byte-range-edits.md +16 -0
- data/docs/adr/002-html-comment-directives.md +16 -0
- data/lib/beid/directive.rb +29 -0
- data/lib/beid/document.rb +112 -0
- data/lib/beid/editing.rb +173 -0
- data/lib/beid/inline_parser.rb +704 -0
- data/lib/beid/node.rb +27 -0
- data/lib/beid/parser.rb +851 -0
- data/lib/beid/version.rb +5 -0
- data/lib/beid.rb +13 -0
- data/sig/beid.rbs +51 -0
- metadata +60 -0
data/lib/beid/version.rb
ADDED
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: []
|