ruby_qb101 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0b649aafacdad337f96dbf14623200f8dd57a5cbb399d207d93f8da8c343f27
4
- data.tar.gz: db64744c473672a9a24f4330670db38b6786a95d6e33252e44d94b766826ca7e
3
+ metadata.gz: f0f3b24e3a7fc32eb8659469b18476223bdabc2f7cf823fafc5940775fcdbb3c
4
+ data.tar.gz: 54e8190b0aef0b0d224009ed39a5e89c8a029111de268d0b6047f58e83b2da0c
5
5
  SHA512:
6
- metadata.gz: b0b982ce0239f9db76198b9f05761448d91fe2ebd6a5035b1b7e4f5cb950d64c8c7355093a23cde4c786bd603cdfeac5d2d62c5fb169fd05510ed8e60af7db02
7
- data.tar.gz: 385fe459f3403c9ae7f26c5cc8a7db78f7e7c1be11b962cf7a33af6e7df9c228519bdb8b8f893e4798b743f2f6821be2c03e1adaf72e38a89c16c18027e8a7dd
6
+ metadata.gz: 8ce8fb423e811d5c0ddb10227c0dd0a2c69742cdcdb6e5777207d0f04f6cae6bbdeabfba90eda5b841aa985fa8fb97fb325e010d39b85680c3e92de7f2fb1bf4
7
+ data.tar.gz: af26c2c91c18e8416cc975912521663c24d9ce3431e580b748514bd7548650da98dd325d430f697fddd0ac8caba5ec228b8bae2abc53e1ef13f8d972fd91595d
checksums.yaml.gz.sig CHANGED
Binary file
@@ -0,0 +1,20 @@
1
+ <?ph schema="book[title,tags]/section[x]"?>
2
+
3
+ title: Questions to ask when learning the programming language Ruby
4
+ tags: ruby learning book questions answers chatgpt
5
+
6
+ # Ruby: Questions
7
+
8
+ ## Introduction to Programming
9
+
10
+ Write a table of contents for a programming language
11
+ What is an expression in a programming language?
12
+ What is a statement in a programming language?
13
+
14
+
15
+ ## Data types
16
+
17
+ What are the different data types in the programming language Ruby?
18
+ Give me an example of using an integer in the programming language Ruby.
19
+ Give me an example of using a boolean in the programming language Ruby.
20
+
data/lib/ruby_qb101.rb CHANGED
@@ -3,37 +3,25 @@
3
3
  # file: ruby_qb101.tb
4
4
 
5
5
  # Description: Ruby related questions to ask Chat GPT. #experimental
6
+ # see https://github.com/jrobertson/ruby_qb101/blob/main/data/ruby_qb101.txt for questions used
6
7
 
8
+ require 'yatoc'
7
9
  require 'polyrex-headings'
8
10
 
9
- QUESTIONS = <<-MARKDOWN
10
11
 
11
- title: Questions to ask when learning the programming language Ruby
12
- tags: ruby learning book questions answers
12
+ # This file contains 2 classes, the question book class and
13
+ # the answer book class.
13
14
 
14
- # Questions to ask when learning the programming language Ruby
15
-
16
- ## Introduction to Programming
17
-
18
- Write a table of contents for a programming language
19
- What is an expression in a programming language?
20
- What is a statement in a programming language?
21
-
22
-
23
- ## Data types
24
-
25
- Give me an example of using an integer in the programming language Ruby.
26
- Give me an example of using a boolean in the programming language Ruby.
27
-
28
-
29
- MARKDOWN
30
15
 
31
16
  class Ruby_Qb101
32
17
 
33
- def initialize(questions=QUESTIONS)
18
+ def initialize(questions_file=nil)
19
+
20
+ questions_file ||= File.join(File.dirname(__FILE__), '..',
21
+ 'data', 'ruby_qb101.txt')
34
22
 
35
- @questions = questions[/#.*/m]
36
- s = '<?ph schema="book[title,tags]/section[x]"?>' + questions
23
+ s = File.read(questions_file)
24
+ @questions = s[/#.*/m]
37
25
  @px = PolyrexHeadings.new(s, debug: false).to_polyrex
38
26
 
39
27
  end
@@ -46,14 +34,99 @@ class Ruby_Qb101
46
34
  end
47
35
 
48
36
  alias q question
37
+
38
+ def questions()
39
+ doc = Rexle.new('<root>' + self.to_html + '</root>')
40
+ a = doc.root.xpath('//p/text()').map(&:to_s)
41
+ end
49
42
 
43
+ def tags()
44
+ @px.summary.tags
45
+ end
46
+
47
+ def title()
48
+ @px.summary.title
49
+ end
50
+
50
51
  def to_md()
51
52
  @questions
52
53
  end
53
54
 
55
+ def to_html()
56
+ s = @questions.strip.gsub(/^([^\n#].[^\n]+)[\n]+/,'\1' + "\n\n")
57
+ Kramdown::Document.new(s).to_html
58
+ end
59
+
60
+ def to_toc()
61
+ Yatoc.new(self.to_html(), min_sections: 1)
62
+ end
63
+
54
64
  def to_xml()
55
65
  @px.to_xml(pretty: true)
56
66
  end
57
67
 
58
68
  end
59
69
 
70
+ class Ruby_Ab101
71
+
72
+ def initialize(qb_txt, ab_xml=nil, filepath: '.', debug: false)
73
+
74
+ @debug = debug
75
+
76
+ @qb = Ruby_Qb101.new(qb_txt)
77
+
78
+ @dx = Dynarex.new('book[title, tags]/item(question, answer)')
79
+ @dx.title = @qb.title
80
+ @dx.tags = @qb.tags
81
+
82
+ @qb.questions.each {|q| @dx.create({question: q}) }
83
+
84
+ if ab_xml then
85
+
86
+ dx = Dynarex.new(ab_xml)
87
+
88
+ # using each question, find the associated answer and
89
+ # add it the main record
90
+
91
+ @qb.questions.each do |q|
92
+
93
+ found = dx.find_by_question q
94
+
95
+ if found then
96
+ rx = @dx.find_by_question q
97
+ rx.answer = found.answer
98
+ end
99
+
100
+ end
101
+
102
+ @dx.save ab_xml
103
+
104
+ end
105
+
106
+ end
107
+
108
+ def save(filename)
109
+ @dx.save filename
110
+ end
111
+
112
+ def to_html()
113
+
114
+ doc = Rexle.new('<body>' + @qb.to_html.gsub(/<p>[^>]+>/,'<div>\0</div>') \
115
+ + '</body>')
116
+ answers = @dx.all.map(&:answer)
117
+
118
+ puts 'answers: ' + answers.inspect if @debug
119
+
120
+ doc.root.xpath('//p').each.with_index do |para, i|
121
+ e = Rexle::Element.new('p', attributes: {class: 'answer'}).add_text answers[i]
122
+ para.insert_after e
123
+ end
124
+
125
+ doc.root.xml pretty: true
126
+ end
127
+
128
+ def to_xml()
129
+ @dx.to_xml(pretty: true)
130
+ end
131
+
132
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_qb101
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
  - James Robertson
@@ -36,8 +36,28 @@ cert_chain:
36
36
  bGVzx0RTtnomJUcww7L+cStXvNaGrg+DX+sCtqD5OMHyGROrZb0UHBgTZixAfZGU
37
37
  zfFnOLNq11nlIwZsUbPNwuNZQVZuB+GhTGc=
38
38
  -----END CERTIFICATE-----
39
- date: 2023-02-06 00:00:00.000000000 Z
39
+ date: 2023-02-07 00:00:00.000000000 Z
40
40
  dependencies:
41
+ - !ruby/object:Gem::Dependency
42
+ name: yatoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.3'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 0.3.5
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '0.3'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.3.5
41
61
  - !ruby/object:Gem::Dependency
42
62
  name: polyrex-headings
43
63
  requirement: !ruby/object:Gem::Requirement
@@ -64,6 +84,7 @@ executables: []
64
84
  extensions: []
65
85
  extra_rdoc_files: []
66
86
  files:
87
+ - data/ruby_qb101.txt
67
88
  - lib/ruby_qb101.rb
68
89
  homepage: https://github.com/jrobertson/ruby_qb101
69
90
  licenses:
metadata.gz.sig CHANGED
Binary file