marko 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +47 -0
  3. data/Gemfile.lock +3 -2
  4. data/README.md +16 -13
  5. data/Rakefile +5 -0
  6. data/STORY.md +44 -0
  7. data/_layouts/footer.md +4 -0
  8. data/_layouts/header.md +3 -0
  9. data/_layouts/layout.html +73 -0
  10. data/_layouts/robots.txt.erb +4 -0
  11. data/_layouts/sitemap.xml.erb +20 -0
  12. data/_layouts/styles.css +92 -0
  13. data/docs/changelog.html +74 -0
  14. data/docs/css/styles.css +92 -0
  15. data/docs/index.html +297 -0
  16. data/docs/readme.html +297 -0
  17. data/docs/robots.txt +4 -0
  18. data/docs/sitemap.xml +30 -0
  19. data/docs/story.html +132 -0
  20. data/exe/marko +4 -2
  21. data/lib/assets/demo/README.md +2 -2
  22. data/lib/assets/demo/src/ur/uc.general.flow.md +1 -1
  23. data/lib/assets/init/README.md +1 -1
  24. data/lib/assets/init/Rakefile +2 -2
  25. data/lib/assets/init/tt/custom.md.tt +19 -0
  26. data/lib/assets/init/tt/default.md.tt +4 -0
  27. data/lib/assets/samples/0_index.md +14 -0
  28. data/lib/assets/samples/1_intro.md +55 -0
  29. data/lib/assets/samples/2_stakh.md +21 -0
  30. data/lib/assets/samples/3_actors.md +10 -0
  31. data/lib/assets/samples/4_cases.md +53 -0
  32. data/lib/assets/samples/5_entities.md +18 -0
  33. data/lib/assets/samples/6_concerns.md +60 -0
  34. data/lib/assets/samples/SRS-IEEE-830-1998.md +293 -0
  35. data/lib/assets/samples/SRS-RUP.md +283 -0
  36. data/lib/assets/samples/business-case.md +116 -0
  37. data/lib/assets/samples/ears.md +112 -0
  38. data/lib/assets/samples/gen_punch_domain.rb +183 -0
  39. data/lib/assets/samples/requirements.md +105 -0
  40. data/lib/assets/samples/stakeholders.png +0 -0
  41. data/lib/assets/samples/vision.md +191 -0
  42. data/lib/marko/artifact.rb +3 -1
  43. data/lib/marko/assembler.rb +1 -0
  44. data/lib/marko/cli.rb +10 -2
  45. data/lib/marko/markup/compiler.rb +3 -9
  46. data/lib/marko/markup/decorator.rb +45 -30
  47. data/lib/marko/markup/storage.rb +37 -19
  48. data/lib/marko/tree_node.rb +3 -2
  49. data/lib/marko/version.rb +1 -1
  50. data/lib/marko.rb +8 -0
  51. data/sancho.yml +6 -0
  52. metadata +35 -4
  53. data/lib/assets/init/tt/artifact.md.tt +0 -3
@@ -0,0 +1,191 @@
1
+ % Vision Document Template
2
+ Company Name
3
+ Vision Document for [Program Name]
4
+ (r) 20XX [Company Name]
5
+
6
+ # Revision History
7
+
8
+ Date | Revision | Description | Author
9
+ :--- | :------- | :---------- | :-----
10
+ mm/dd/yy | 1.0 | Initial version | Author name
11
+
12
+ # Table of Contents
13
+
14
+ # 1 Introduction
15
+
16
+ This section provides an overview of the Vision document.
17
+
18
+ ## 1.1 Purpose
19
+
20
+ This document defines the strategic intent of the program. It defines high-level user needs, any applicable user personas, key stakeholders, and the general system capabilities needed by the users.
21
+
22
+ ## 1.2 Solution Overview
23
+
24
+ State the general purpose of the product, system, application or service, and any version identification.
25
+
26
+ * Identify the product or application to be created or enhanced.
27
+ * Describe the application of the product, including its benefits, goals, and objectives.
28
+ * Provide a general description of what the solution will and, where appropriate, will not do.
29
+
30
+ ## 1.3 References
31
+
32
+ List other documents referenced, and specify the sources from which the references can be obtained. If a business case (Chapter 23) was developed to drive the program, refer to it or attach it.
33
+
34
+ # 2 User Description
35
+ To provide products and services that meet users’ needs, it is helpful to understand the challenges they confront when performing their jobs. This section should profile the intended users of the application and the key problems that limit the user’s productivity. This section should not be used to state specific requirements; just provide the background for why the features specified in Section 5 are needed.
36
+
37
+ ## 2.1 User/Market Demographics
38
+
39
+ Summarize the key market demographics that motivate your solution decisions. Describe target-market segments. Estimate the market’s size and growth by the number of potential users or the amount of money your customers spend, trying to meet needs that your product/enhancement would fulfill. Review major industry trends and technologies. Refer to a market analysis, where available.
40
+
41
+ ## 2.2 User Personas
42
+
43
+ Describe the primary and secondary user personas (see Chapter 7). A thorough analysis might cover the following topics for each persona:
44
+
45
+ * Technical background and degree of sophistication
46
+ * Key responsibilities
47
+ * Deliverables the user produces and for whom
48
+ * Trends that make the user’s job easier or more difficult
49
+ * The user’s definition of success and how the user is rewarded
50
+ * Problems that interfere with success
51
+
52
+ ## 2.3 User Environment
53
+
54
+ Describe the working environment of the target user. Here are some suggestions.
55
+
56
+ * How many people are involved in completing the task? Is this changing?
57
+ * How long is a task cycle? How much time is spent in each activity? Is this changing?
58
+ * Are there any unique environmental constraints: controlled environment, mobile, outdoors, and so on?
59
+ * Which system platforms are in use today? Future platforms?
60
+ * What other applications are in use? Does your application need to integrate with them?
61
+
62
+ ## 2.4 Key User Needs
63
+
64
+ List the key problems or needs as perceived by the user. Clarify the following issues for each problem.
65
+
66
+ * What are the reasons for this problem?
67
+ * How is it solved now?
68
+ * What solutions does the user envision?
69
+
70
+ Ranking and cumulative-voting techniques for these needs indicate problems that must be solved versus issues the user would like to be solved.
71
+
72
+ ## 2.5 Alternatives and Competition
73
+
74
+ Identify any alternatives available to the user. These can include buying a competitor’s product, building a homegrown solution, or simply maintaining the status quo. List any known competitive choices that exist. Include the major strengths and weaknesses of each competitor as perceived by the end user.
75
+
76
+ ### 2.5.1 Competitor 1
77
+
78
+ ### 2.5.2 Competitor 2
79
+
80
+ # 3 Stakeholders
81
+
82
+ Identify the program stakeholders, their needs, and their degree of involvement with the system. A table such as the following can be effective:
83
+
84
+ Project<br/>Stakeholder | Degree of<br/> Involvement | Product Needs | Program Needs
85
+ :---- | :---- | :---- | :----
86
+ Stakeholder 1 | | |
87
+ Stakeholder 2 | | |
88
+
89
+ # 4 Product Overview
90
+
91
+ This section provides a high-level view of the solution capabilities, interfaces to other applications, and systems configurations. This section usually consists of five subsections, as follows.
92
+
93
+ ## 4.1 Product Perspective
94
+
95
+ This subsection should put the product in perspective to other related products and the user’s environment. If the product is independent and totally self-contained, state so. If the product is a component of a larger system, this subsection should relate how these systems interact and should identify the relevant interfaces among the systems. One easy way to display the major components of the larger system, interconnections, and external interfaces is via a system context block diagram.
96
+
97
+ ## 4.2 Product Position Statement
98
+
99
+ Provide an overall statement summarizing, at the highest level, the unique position the product intends to fill in the marketplace. Moore [1991] calls this the product position statement and recommends the following format.
100
+
101
+ For | (target customer)
102
+ :-- | :----------------
103
+ Who | (statement of the need or opportunity)
104
+ The (product name) | is a (product category)
105
+ That | (statement of key benefit, that is, compelling rea
106
+ son to buy)
107
+ Unlike | (primary competitive alternative)
108
+ Our product | (statement of primary differentiation)
109
+
110
+ A product position statement communicates the intent of the application and the importance of the program to all stakeholders.
111
+
112
+ ## 4.3 Summary of Capabilities
113
+
114
+ Summarize the major benefits and features the product will provide. Organize the features so that the list is understandable to any stakeholder. A simple table listing the key benefits and their supporting features, as shown below, might suffice.
115
+
116
+ Solution Features | Customer Benefit
117
+ :---------------- | :---------------
118
+ Feature 1 | Benefit 1
119
+ Feature 2 | Benefit 2
120
+
121
+ ## 4.4 Assumptions and Dependencies
122
+
123
+ List any assumptions that, if changed, will alter the vision for the product.
124
+
125
+ ## 4.5 Cost and Pricing
126
+
127
+ Describe any relevant cost and pricing constraints, because these can directly impact the solution definition and implementation.
128
+
129
+ # 5 Product Features
130
+
131
+ This section describes the intended product features. Features provide the system capabilities that are necessary to deliver benefits to the users. Feature descriptions should be short and pithy, a key phrase, perhaps followed by one or two sentences of explanation.
132
+
133
+ Use a level of abstraction high enough to be able to describe the system with a maximum of 25 to 50 features. Each feature should be perceivable by users, operators, or other external systems.
134
+
135
+ ## 5.1 Feature 1
136
+
137
+ ## 5.2 Feature 2
138
+
139
+ # 6 Exemplary Use Cases
140
+
141
+ [Optional] You may want to describe a few exemplary use cases, perhaps those that are architecturally significant or those that will most readily help the reader understand how the system is intended to be used.
142
+
143
+ # 7 Nonfunctional Requirements
144
+
145
+ This section records other system requirements including nonfunctional requirements (constraints) imposed on the system (see Chapter 17).
146
+
147
+ ## 7.1 Usability
148
+
149
+ ## 7.2 Reliability
150
+
151
+ ## 7.3 Performance
152
+
153
+ ## 7.4 Supportability
154
+
155
+ ## 7.5 Other Requirements
156
+
157
+ ### 7.5.1 Applicable Standards
158
+
159
+ List all standards the product must comply with, such as legal and regulatory, communications standards, platform compliance standards, and quality and safety standards.
160
+
161
+ ### 7.5.2 System Requirements
162
+
163
+ Define any system requirements necessary to support the application. These may include the host operating systems and network platforms, configurations, communication, peripherals, and companion software.
164
+
165
+ ### 7.5.3 Licensing, Security, and Installation
166
+
167
+ Licensing, security, and installation issues can also directly impact the development effort. Installation requirements may affect coding or create the need for separate installation software.
168
+
169
+ # 8 Documentation Requirements
170
+
171
+ This section describes the documentation that must be developed to support successful deployment and use.
172
+
173
+ ## 8.1 User Manual
174
+
175
+ Describe the intent of the user manual. Discuss desired length, level of detail, need for index and glossary, tutorial versus reference manual strategy, and so on. Formatting, electronic distribution, and printing constraints should also be identified.
176
+
177
+ ## 8.2 Online Help
178
+
179
+ The nature of these systems is unique to application development since they combine aspects of programming and hosting, such as hyperlinks and web services, with aspects of technical writing, such as organization, style, and presentation.
180
+
181
+ ## 8.3 Installation Guides, Configuration, “Read Me” File
182
+
183
+ A document that includes installation instructions and configuration guidelines is typically necessary. Also, a “read me” file is often included as a standard component. The “read me” file may include a “What’s New with This Release” section and a discussion of compatibility issues with earlier releases. Most users also appreciate publication of any known defects and workarounds.
184
+
185
+ ## 8.4 Labeling and Packaging
186
+
187
+ Defines the requirements for labeling to be incorporated into the code. Examples include copyright and patent notices, corporate logos, standardized icons, and other graphic elements.
188
+
189
+ ## 9 Glossary
190
+
191
+ The glossary defines terms that are unique to the program. Include any acronyms or abbreviations that need to be understood by users or other readers.
@@ -1,3 +1,5 @@
1
1
  module Marko
2
- Artifact = Struct.new(:id, :title, :template, :filename)
2
+ Artifact = Struct.new(:title, :template, :filename)
3
+ NULLFACT = Artifact.new("Artifact",
4
+ "tt/default.md.tt", "bin/artifact.md") .freeze
3
5
  end
@@ -29,6 +29,7 @@ module Marko
29
29
  buffer, errors = Loader.(&@block)
30
30
  fail Failure.new('markup parsing errors', *errors) if errors.any?
31
31
  @block.(:stage, 'tree assemblage') if @block
32
+ # @todo fold first level when root note contain only one item?
32
33
  tree = assemble(buffer)
33
34
  @block.(:stage, 'tree enrichment') if @block
34
35
  injectid(tree)
data/lib/marko/cli.rb CHANGED
@@ -25,12 +25,20 @@ module Marko
25
25
  def punch_demo(args = ARGV)
26
26
  # pp options(:demo, args)
27
27
  log = storage.punch_demo
28
- puts "Marko Demo cloned!\n#{log}"
28
+ puts "Marko Demo copied!"
29
+ puts log.map{" #{_1}"}.join(?\n)
30
+
29
31
  kwargs = options(:demo, args)
30
32
  editor = kwargs.fetch(:editor, '')
31
33
  Dir.chdir(log) { `#{editor} .` } unless editor.empty?
32
34
  end
33
35
 
36
+ def punch_samples(args = ARGV)
37
+ log = storage.punch_samples
38
+ puts "Marko Samples copied!"
39
+ puts log.map{" #{_1}"}.join(?\n)
40
+ end
41
+
34
42
  def compile(args = ARGV)
35
43
  unless storage.marko_home?
36
44
  puts "Marko directory required!"
@@ -89,7 +97,7 @@ module Marko
89
97
  # ||----w |
90
98
  # || ||
91
99
  BANNER = <<~EOF.freeze
92
- ~ Marko v0.1.3 ~ Markup Compiler
100
+ ~ Marko v#{Marko::VERSION} ~ Markup Compiler
93
101
  ~ https://github.io/nvoynov/marko
94
102
  EOF
95
103
 
@@ -19,15 +19,9 @@ module Marko
19
19
 
20
20
  def compile
21
21
  storage = StoragePlug.plugged
22
- erbgen = ERB.new(@template, trim_mode: '-')
23
- payload = @tree.map{|n| Decorator.new(n)}
24
- storage.write(@filename){|f|
25
- payload.each{|node|
26
- @node = node
27
- text = erbgen.result(binding)
28
- f.puts text
29
- }
30
- }
22
+ @model = @tree.map{|n| Markup::Decorator.new(n)}
23
+ samplr = ERB.new(@template, trim_mode: '%<>')
24
+ storage.write(@filename, samplr.result(binding))
31
25
  @filename
32
26
  end
33
27
  end
@@ -12,53 +12,68 @@ module Marko
12
12
  @macroproc = MacroProcPlug.plugged
13
13
  end
14
14
 
15
+ def title
16
+ super.then{|s| s.empty? ? ".#{id.split(/\./).last}" : s}
17
+ end
18
+
19
+ def body
20
+ @macroproc.process(super, self).strip
21
+ end
22
+
23
+ # @return [Hash] metdata cleaned from system meta
24
+ def meta
25
+ super.dup.tap{|h| h.update(id: id)}
26
+ .reject{|k,_| %i[origin parent order_index].include?(k)}
27
+ end
28
+
15
29
  def find_node(ref)
16
30
  obj = super(ref)
17
31
  return nil unless obj
18
32
  self.class.new(obj)
19
33
  end
20
34
 
21
- def url
22
- id.downcase
23
- .gsub(/\W{1,}/, '-')
24
- .gsub(/^-/, '')
25
- .gsub(/-$/, '')
26
- .then{"##{_1}"}
27
- end
28
-
29
35
  def ref
30
36
  "[#{title}](#{url})"
31
37
  end
32
38
 
33
- def title
34
- str = super
35
- str = ".#{id.split(/\./).last}" if str.empty?
36
- str
39
+ # @return [String] return header
40
+ def topic
41
+ return "% #{title}" if root?
42
+ "#{'#' * nesting_level} #{title.strip} {#{url}}"
37
43
  end
44
+ alias :header :topic
38
45
 
39
- def header
40
- return "% #{title}\n" if root?
41
- "#{'#' * nesting_level} #{title.strip} {#{url}}\n"
46
+ # return [String] meta properties table
47
+ def props
48
+ meta.then{|h|
49
+ klen = h.keys.map{ _1.to_s.size }.max + 4
50
+ vlen = h.values.map(&:size).max
51
+ mark = ?- * klen + ?\s + ?- * vlen
52
+ h.map{|k, v| "__#{k.capitalize}__".ljust(klen) + ?\ + v }
53
+ .unshift(mark)
54
+ .push(mark)
55
+ .join(?\n)
56
+ }
42
57
  end
43
58
 
44
- def meta
45
- hsh = super.dup
46
- hsh[:id] = id # full id will be there
47
- hsh.delete(:order_index)
48
- hsh.delete(:parent)
49
- hsh.delete(:origin)
50
- len = hsh.keys.map(&:length).max
51
- [].tap{|ary|
52
- ary << "key | value"
53
- ary << "--- | -----"
54
- hsh.each{|k,v| ary << "#{k} | #{v}"}
55
- }.join(?\n) + ?\n
59
+ # @return [String] decorated node content
60
+ def text
61
+ [ topic, props, body
62
+ ].reject(&:empty?)
63
+ .join("\n\n") +
64
+ "\n\n"
56
65
  end
57
66
 
58
- def body
59
- text = @macroproc.process(super, self)
60
- text.strip + ?\n
67
+ protected
68
+
69
+ def url
70
+ id.downcase
71
+ .gsub(/\W{1,}/, '-')
72
+ .gsub(/^-/, '')
73
+ .gsub(/-$/, '')
74
+ .then{"##{_1}"}
61
75
  end
76
+
62
77
  end
63
78
 
64
79
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require "psych"
3
3
  require 'fileutils'
4
- require "securerandom"
5
4
  require_relative "../storage"
6
5
 
7
6
  module Marko
@@ -17,22 +16,35 @@ module Marko
17
16
  def punch(storage)
18
17
  fail Failure, "Directory already exists" if Dir.exist?(storage)
19
18
  Dir.mkdir(storage)
20
- Dir.chdir(storage) {
19
+ furnish(storage)
20
+ end
21
+
22
+ def furnish(directory)
23
+ Dir.chdir(directory) {
21
24
  marko_directories.each{|dir| Dir.mkdir dir }
22
25
  src = File.join(Marko.root, 'lib', 'assets', 'init', '.')
23
26
  cp_r src, Dir.pwd
27
+ artifact
24
28
  }
25
29
  end
26
30
 
27
31
  # create demo project
28
32
  def punch_demo
29
- demo = File.join(Dir.home, DEMO)
30
- unless Dir.exist?(demo)
31
- punch(demo)
32
- assets = File.join(Marko.root, 'lib', 'assets', 'demo', '.')
33
- cp_r assets, demo
34
- end
35
- demo
33
+ return if Dir.exist?(DEMO)
34
+ mkdir_p DEMO
35
+ furnish DEMO
36
+ demo = File.join(Marko.demo, '.')
37
+ cp_r demo, DEMO
38
+ Dir.glob("#{DEMO}/**/*", File::FNM_DOTMATCH).tap(&:shift)
39
+ end
40
+
41
+ # create samples dir
42
+ def punch_samples
43
+ return if Dir.exist?(SAMPLES)
44
+ mkdir_p SAMPLES
45
+ samples = File.join(Marko.samples, '.')
46
+ cp_r samples, SAMPLES
47
+ Dir.glob("#{SAMPLES}/**/*", File::FNM_DOTMATCH).tap(&:shift)
36
48
  end
37
49
 
38
50
  # @see Storage#sources
@@ -62,14 +74,20 @@ module Marko
62
74
 
63
75
  # @see Marko::Strorage#artifact
64
76
  def artifact
65
- return Psych.load_file(ARTIFACT).freeze if File.exist?(ARTIFACT)
66
- art = Artifact.new(SecureRandom.uuid,
67
- 'Marko Artifact',
68
- 'tt/artifact.md.tt',
69
- 'tt/marko-artifact.md'
70
- )
71
- File.write(ARTIFACT, Psych.dump(art))
72
- art.freeze
77
+ artf = NULLFACT
78
+ head, body = Psych.dump(artf).lines.then{|ln|
79
+ [ln.first, ln.drop(1).join]
80
+ }
81
+
82
+ unless File.exist?(ARTIFACT)
83
+ File.write(ARTIFACT, body)
84
+ return artf
85
+ end
86
+
87
+ body = File.read(ARTIFACT)
88
+ obj = Psych.load(head + body, freeze: true,
89
+ permitted_classes: [Symbol, Marko::Artifact])
90
+ obj.is_a?(Artifact) ? obj : artf
73
91
  end
74
92
 
75
93
  protected
@@ -79,13 +97,13 @@ module Marko
79
97
  BINARY = 'bin'.freeze
80
98
  SAMPLE = 'tt'.freeze
81
99
  ASSETS = File.join(BINARY, 'assets').freeze
82
- DEMO = 'marko_demo'.freeze
100
+ DEMO = File.join('.marko', 'demo').freeze
101
+ SAMPLES = File.join('.marko', 'samples').freeze
83
102
 
84
103
  def marko_directories
85
104
  [SOURCE, BINARY, ASSETS, SAMPLE]
86
105
  end
87
106
 
88
-
89
107
  def marko_home!
90
108
  fail Failure, "Marko project required!" unless marko_home?
91
109
  end
@@ -85,8 +85,9 @@ module Marko
85
85
  end
86
86
 
87
87
  def belongs_to?(ref)
88
- owner = root.find{|n| n.id == ref}
89
- self == owner&.find{|n| n == self}
88
+ node = self.parent
89
+ node = node.parent while node && node.id != ref
90
+ node&.id == ref
90
91
  end
91
92
 
92
93
  # @return [Node] the root node in the node hierarchy
data/lib/marko/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Marko
4
- VERSION = "0.1.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/marko.rb CHANGED
@@ -21,6 +21,14 @@ module Marko
21
21
  File.dirname __dir__
22
22
  end
23
23
 
24
+ def demo
25
+ File.join(root, 'lib', 'assets', 'demo')
26
+ end
27
+
28
+ def samples
29
+ File.join(root, 'lib', 'assets', 'samples')
30
+ end
31
+
24
32
  # helper method for assemblage
25
33
  # @see Marko::Services::Assemble
26
34
  def assemble(&block)
data/sancho.yml ADDED
@@ -0,0 +1,6 @@
1
+ domain: nvoynov.github.io/marko
2
+ title: Marko Markup Compiler
3
+ pages:
4
+ - README.md
5
+ - CHANGELOG.md
6
+ - STORY.md
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marko
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikolay Voynov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-02 00:00:00.000000000 Z
11
+ date: 2023-11-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  Marko supplies a "docs-as-code" approach for compiling bulky software artifacts by providing source storage, original plain text markup, compiler templates, command-line and Gem interfaces.
@@ -26,6 +26,20 @@ files:
26
26
  - Gemfile.lock
27
27
  - README.md
28
28
  - Rakefile
29
+ - STORY.md
30
+ - _layouts/footer.md
31
+ - _layouts/header.md
32
+ - _layouts/layout.html
33
+ - _layouts/robots.txt.erb
34
+ - _layouts/sitemap.xml.erb
35
+ - _layouts/styles.css
36
+ - docs/changelog.html
37
+ - docs/css/styles.css
38
+ - docs/index.html
39
+ - docs/readme.html
40
+ - docs/robots.txt
41
+ - docs/sitemap.xml
42
+ - docs/story.html
29
43
  - exe/marko
30
44
  - lib/assets/demo/README.md
31
45
  - lib/assets/demo/src/fr/assemble.md
@@ -41,7 +55,23 @@ files:
41
55
  - lib/assets/demo/src/ur/uc.general.flow.md
42
56
  - lib/assets/init/README.md
43
57
  - lib/assets/init/Rakefile
44
- - lib/assets/init/tt/artifact.md.tt
58
+ - lib/assets/init/tt/custom.md.tt
59
+ - lib/assets/init/tt/default.md.tt
60
+ - lib/assets/samples/0_index.md
61
+ - lib/assets/samples/1_intro.md
62
+ - lib/assets/samples/2_stakh.md
63
+ - lib/assets/samples/3_actors.md
64
+ - lib/assets/samples/4_cases.md
65
+ - lib/assets/samples/5_entities.md
66
+ - lib/assets/samples/6_concerns.md
67
+ - lib/assets/samples/SRS-IEEE-830-1998.md
68
+ - lib/assets/samples/SRS-RUP.md
69
+ - lib/assets/samples/business-case.md
70
+ - lib/assets/samples/ears.md
71
+ - lib/assets/samples/gen_punch_domain.rb
72
+ - lib/assets/samples/requirements.md
73
+ - lib/assets/samples/stakeholders.png
74
+ - lib/assets/samples/vision.md
45
75
  - lib/marko.rb
46
76
  - lib/marko/artifact.rb
47
77
  - lib/marko/assembler.rb
@@ -69,6 +99,7 @@ files:
69
99
  - lib/marko/validator.rb
70
100
  - lib/marko/version.rb
71
101
  - marko.gemspec
102
+ - sancho.yml
72
103
  homepage: https://github.com/nvoynov/marko
73
104
  licenses: []
74
105
  metadata:
@@ -91,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
122
  - !ruby/object:Gem::Version
92
123
  version: '0'
93
124
  requirements: []
94
- rubygems_version: 3.4.1
125
+ rubygems_version: 3.4.19
95
126
  signing_key:
96
127
  specification_version: 4
97
128
  summary: Marko is a markup compiler that builds a tree from separated markup sources
@@ -1,3 +0,0 @@
1
- <%= @node.header %>
2
- <%= @node.meta %>
3
- <%= @node.body %>