ruby_qb101 0.2.0 → 0.4.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: 2c606fe457d92b06eee6014a642500016f4a2d95f981b5f2cec5ff0b2205df1e
4
- data.tar.gz: a8cd2544671cdf4663a38f214295d0ce122e5c40a1ea36e13a8ed700b12c4f96
3
+ metadata.gz: f95ed43b8b9f7663bd62e4b6d6794ffef6ff2a3d88be2109c9efafc6e301ac01
4
+ data.tar.gz: 3a2055303a1d1be1428293ca0331b7096e82866a32e8fca7671f96854923bdf2
5
5
  SHA512:
6
- metadata.gz: 225a7f5988f5b3976f5db04f36d93cfb1f79c6bef45c76cfbf9e9d34ebecd276d650112cb7eefe5a443bf29478ced234df8713fcaed10e0085cdeb80819c2653
7
- data.tar.gz: b8f582f0a6681394669c934482dc65352ec40a54a2ee51d4eec4edb579a87b24f4b98f8f7bddc1bf7a9cfcc5c18e5728ce6dc52f9e96642d535e8ebe7938bf9e
6
+ metadata.gz: a670add09644a3bca2aa189ca9732286667302a2da646d7a8dbee9f7fda5a03bae309e13ccfa43d144b123be33c4d94b694de3b6c8306934f0c285d848b0d517
7
+ data.tar.gz: f7e1f95db2e920ab696f78182578e90b76048b6ec71c22d0a41f09d0dd6ad7b6a2dba359103718e025764f0c021df0cd344bd3bb839bd79395d4c4fd2dc711d2
checksums.yaml.gz.sig CHANGED
Binary file
data/data/ruby_qb101.txt CHANGED
@@ -1,22 +1,20 @@
1
1
  <?ph schema="book[title,tags]/section[x]"?>
2
2
 
3
3
  title: Questions to ask when learning the programming language Ruby
4
- tags: ruby learning book questions answers
4
+ tags: ruby learning book questions answers chatgpt
5
5
 
6
- # Questions to ask when learning the programming language Ruby
6
+ # Ruby: Questions
7
7
 
8
8
  ## Introduction to Programming
9
9
 
10
10
  Write a table of contents for a programming language
11
-
12
11
  What is an expression in a programming language?
13
-
14
12
  What is a statement in a programming language?
15
13
 
16
14
 
17
15
  ## Data types
18
16
 
17
+ What are the different data types in the programming language Ruby?
19
18
  Give me an example of using an integer in the programming language Ruby.
20
-
21
19
  Give me an example of using a boolean in the programming language Ruby.
22
20
 
data/lib/ruby_qb101.rb CHANGED
@@ -3,11 +3,16 @@
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
 
7
8
  require 'yatoc'
8
9
  require 'polyrex-headings'
9
10
 
10
11
 
12
+ # This file contains 2 classes, the question book class and
13
+ # the answer book class.
14
+
15
+
11
16
  class Ruby_Qb101
12
17
 
13
18
  def initialize(questions_file=nil)
@@ -20,7 +25,7 @@ class Ruby_Qb101
20
25
  @px = PolyrexHeadings.new(s, debug: false).to_polyrex
21
26
 
22
27
  end
23
-
28
+
24
29
  def question(id)
25
30
 
26
31
  found = @px.find_by_id(id.to_s)
@@ -29,13 +34,38 @@ class Ruby_Qb101
29
34
  end
30
35
 
31
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
32
42
 
43
+ def tags()
44
+ @px.summary.tags
45
+ end
46
+
47
+ def title()
48
+ @px.summary.title
49
+ end
50
+
33
51
  def to_md()
34
52
  @questions
35
53
  end
36
54
 
37
55
  def to_html()
38
- Kramdown::Document.new(@questions).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_prompts()
61
+
62
+ # generates a Dynarex file for use with ChatAway class in ChaptGpt2023
63
+ dx = Dynarex.new('prompts/entry(prompt,type, redo)')
64
+
65
+ questions().each {|x| dx.create({prompt: x, type: 'completion'}) }
66
+
67
+ return dx
68
+
39
69
  end
40
70
 
41
71
  def to_toc()
@@ -48,6 +78,91 @@ class Ruby_Qb101
48
78
 
49
79
  end
50
80
 
51
- #qb = Ruby_Qb101.new()
52
- #qb.to_md
53
- #qb.question('7')
81
+ class Ruby_Ab101
82
+
83
+ # note: the ab_xml file can be in CGRecorder log XML format
84
+
85
+ def initialize(qb_txt, ab_xml=nil, filepath: '.', debug: false)
86
+
87
+ @debug = debug
88
+
89
+ @qb = Ruby_Qb101.new(qb_txt)
90
+
91
+ @dx = Dynarex.new('book[title, tags]/item(question, answer)')
92
+ @dx.title = @qb.title
93
+ @dx.tags = @qb.tags
94
+
95
+ @qb.questions.each {|q| @dx.create({question: q}) }
96
+
97
+ if ab_xml and File.exist?(ab_xml) then
98
+
99
+ dx = Dynarex.new(ab_xml)
100
+
101
+ # using each question, find the associated answer and
102
+ # add it the main record
103
+
104
+ @qb.questions.each do |q|
105
+
106
+ puts 'q: ' + q.inspect if @debug
107
+
108
+ # note: the find_by ... method is passing in a regex because passing
109
+ # in a String causes the xpath to execute which is known to have
110
+ # a serious bug when the value contains *and*.
111
+ if dx.schema =~ /question, answer/ then
112
+
113
+ found = dx.find_by_question /#{q}/
114
+
115
+ if found then
116
+ rx = @dx.find_by_question /#{q}/
117
+ rx.answer = found.answer
118
+ end
119
+
120
+ else
121
+
122
+ #puts 'dx: ' + dx.to_xml(pretty: true) if @debug
123
+ found = dx.find_by_prompt /#{q}/
124
+ puts 'found: ' + found.inspect if @debug
125
+
126
+ if found then
127
+ rx = @dx.find_by_question /#{q}/
128
+ rx.answer = found.result
129
+ end
130
+
131
+ end
132
+
133
+ end
134
+
135
+ #@dx.save ab_xml
136
+
137
+ end
138
+
139
+ end
140
+
141
+ def save(filename)
142
+ @dx.save filename
143
+ end
144
+
145
+ def to_html()
146
+
147
+ doc = Rexle.new('<body>' + @qb.to_html.gsub(/<p>[^>]+>/,'<div>\0</div>') \
148
+ + '</body>')
149
+ answers = @dx.all.map(&:answer)
150
+
151
+ puts 'answers: ' + answers.inspect if @debug
152
+
153
+ doc.root.xpath('//p').each.with_index do |para, i|
154
+
155
+ e = Rexle::Element.new('p', attributes: {class: 'answer'})\
156
+ .add_text answers[i]
157
+ para.insert_after e
158
+
159
+ end
160
+
161
+ doc.root.xml pretty: true
162
+ end
163
+
164
+ def to_xml()
165
+ @dx.to_xml(pretty: true)
166
+ end
167
+
168
+ 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.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -36,7 +36,7 @@ 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-14 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: yatoc
@@ -58,26 +58,6 @@ dependencies:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: 0.3.5
61
- - !ruby/object:Gem::Dependency
62
- name: polyrex-headings
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '0.3'
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- version: 0.3.0
71
- type: :runtime
72
- prerelease: false
73
- version_requirements: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - "~>"
76
- - !ruby/object:Gem::Version
77
- version: '0.3'
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: 0.3.0
81
61
  description:
82
62
  email: digital.robertson@gmail.com
83
63
  executables: []
metadata.gz.sig CHANGED
Binary file