Class: MQ::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/mq/query.rb

Overview

Programmatic query builder for constructing mq queries in Ruby.

Examples:

Basic selector

MQ::Query.h2
# => ".h2"

Selector with filter

MQ::Query.h2.select { contains("Feature") }
# => '.h2 | select(contains("Feature"))'

Pipe operator

MQ::Query.h2 | MQ::Query.to_text
# => ".h2 | to_text()"

Attribute access

MQ::Query.link.url
# => ".link | .url"

Complex chain

MQ::Query.h2
  .select { contains("Section") & starts_with("##") }
  .to_text
# => '.h2 | select(contains("Section") and starts_with("##")) | to_text()'

Using with MQ.run

result = MQ.run(MQ::Query.h2.select { contains("Feature") }, content)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(expr = "") ⇒ Query

Returns a new instance of Query.



31
32
33
# File 'lib/mq/query.rb', line 31

def initialize(expr = "")
  @expr = expr.to_s
end

Class Method Details

.alignObject



518
# File 'lib/mq/query.rb', line 518

def align      = new(".align")

.altObject



511
# File 'lib/mq/query.rb', line 511

def alt        = new(".alt")

.blockquoteObject



439
# File 'lib/mq/query.rb', line 439

def blockquote = new(".blockquote")

.checkedObject



515
# File 'lib/mq/query.rb', line 515

def checked    = new(".checked")

.codeObject

Block element selectors



437
# File 'lib/mq/query.rb', line 437

def code       = new(".code")

.code_inlineObject

Inline element selectors



457
# File 'lib/mq/query.rb', line 457

def code_inline  = new(".code_inline")

.columnObject



516
# File 'lib/mq/query.rb', line 516

def column     = new(".column")

.definitionObject



451
# File 'lib/mq/query.rb', line 451

def definition = new(".definition")

.deleteObject



446
# File 'lib/mq/query.rb', line 446

def delete     = new(".delete")

.depthObject



512
# File 'lib/mq/query.rb', line 512

def depth      = new(".depth")

.doneObject



467
# File 'lib/mq/query.rb', line 467

def done       = new(".done")

.emphasisObject



445
# File 'lib/mq/query.rb', line 445

def emphasis   = new(".emphasis")

.fenceObject



509
# File 'lib/mq/query.rb', line 509

def fence      = new(".fence")

.footnoteObject



452
# File 'lib/mq/query.rb', line 452

def footnote   = new(".footnote")

.footnote_refObject



461
# File 'lib/mq/query.rb', line 461

def footnote_ref = new(".footnote_ref")

.headingObject

Generic heading (any level)



434
# File 'lib/mq/query.rb', line 434

def heading    = new(".heading")

.hrObject



440
# File 'lib/mq/query.rb', line 440

def hr         = new(".hr")

.htmlObject



450
# File 'lib/mq/query.rb', line 450

def html       = new(".html")

.imageObject



441
# File 'lib/mq/query.rb', line 441

def image      = new(".image")

.image_refObject



460
# File 'lib/mq/query.rb', line 460

def image_ref    = new(".image_ref")

.langObject



507
# File 'lib/mq/query.rb', line 507

def lang       = new(".lang")

.levelObject



513
# File 'lib/mq/query.rb', line 513

def level      = new(".level")

.line_breakObject



462
# File 'lib/mq/query.rb', line 462

def line_break   = new(".break")


442
# File 'lib/mq/query.rb', line 442

def link       = new(".link")


459
# File 'lib/mq/query.rb', line 459

def link_ref     = new(".link_ref")

.listObject

--- List selector ---



470
# File 'lib/mq/query.rb', line 470

def list       = new(".[]")

.list_at(n) ⇒ Object

List item at a specific index: .[n]



473
474
475
# File 'lib/mq/query.rb', line 473

def list_at(n)
  new(".[#{n}]")
end

.mathObject



447
# File 'lib/mq/query.rb', line 447

def math       = new(".math")

.math_inlineObject



458
# File 'lib/mq/query.rb', line 458

def math_inline  = new(".math_inline")

.mdx_flow_expressionObject



498
# File 'lib/mq/query.rb', line 498

def mdx_flow_expression   = new(".mdx_flow_expression")

.mdx_js_esmObject



499
# File 'lib/mq/query.rb', line 499

def mdx_js_esm            = new(".mdx_js_esm")

.mdx_jsx_flow_elementObject

--- MDX selectors ---



495
# File 'lib/mq/query.rb', line 495

def mdx_jsx_flow_element  = new(".mdx_jsx_flow_element")

.mdx_jsx_text_elementObject



497
# File 'lib/mq/query.rb', line 497

def mdx_jsx_text_element  = new(".mdx_jsx_text_element")

.mdx_text_expressionObject



496
# File 'lib/mq/query.rb', line 496

def mdx_text_expression   = new(".mdx_text_expression")

.metaObject



508
# File 'lib/mq/query.rb', line 508

def meta       = new(".meta")

.node_valuesObject



506
# File 'lib/mq/query.rb', line 506

def node_values = new(".values")

.orderedObject



514
# File 'lib/mq/query.rb', line 514

def ordered    = new(".ordered")

.paragraphObject



438
# File 'lib/mq/query.rb', line 438

def paragraph  = new(".p")

.property(key) ⇒ Object

Dict property selector: ."key"



521
522
523
# File 'lib/mq/query.rb', line 521

def property(key)
  new(".\"#{key}\"")
end

.randObject



542
# File 'lib/mq/query.rb', line 542

def rand        = new("rand()")

.rand_int(min, max) ⇒ Object



544
545
546
# File 'lib/mq/query.rb', line 544

def rand_int(min, max)
  new("rand_int(#{min}, #{max})")
end

.random_string(len, charset) ⇒ Object

Returns a random string of len characters drawn (with replacement) from charset.



550
551
552
# File 'lib/mq/query.rb', line 550

def random_string(len, charset)
  new("random_string(#{len}, #{charset.inspect})")
end

.recursiveObject

Recursive / deep selector (..)



502
# File 'lib/mq/query.rb', line 502

def recursive  = new("..")

.rowObject



517
# File 'lib/mq/query.rb', line 517

def row        = new(".row")

.select(filter = nil) { ... } ⇒ Query

Class-level select (no leading selector)

Parameters:

  • filter (Filter, String, nil) (defaults to: nil)

Yields:

Returns:



530
531
532
533
# File 'lib/mq/query.rb', line 530

def select(filter = nil, &block)
  filter_str = new.send(:resolve_filter, filter, &block)
  new("select(#{filter_str})")
end

.strongObject



444
# File 'lib/mq/query.rb', line 444

def strong     = new(".strong")

.tableObject



448
# File 'lib/mq/query.rb', line 448

def table      = new(".table")

.table_alignObject



449
# File 'lib/mq/query.rb', line 449

def table_align = new(".table_align")

.table_cell(r, c) ⇒ Object

A specific cell: .[row][col]



490
491
492
# File 'lib/mq/query.rb', line 490

def table_cell(r, c)
  new(".[#{r}][#{c}]")
end

.table_col(n) ⇒ Object

All cells in a specific column: .[][n]



485
486
487
# File 'lib/mq/query.rb', line 485

def table_col(n)
  new(".[][#{n}]")
end

.table_row(n) ⇒ Object

All cells in a specific row: .[n][]



480
481
482
# File 'lib/mq/query.rb', line 480

def table_row(n)
  new(".[#{n}][]")
end

.taskObject

Task list selectors



465
# File 'lib/mq/query.rb', line 465

def task       = new(".task")

.textObject



443
# File 'lib/mq/query.rb', line 443

def text       = new(".text")

.to_markdownObject



536
# File 'lib/mq/query.rb', line 536

def to_markdown = new("to_markdown()")

.to_textObject



535
# File 'lib/mq/query.rb', line 535

def to_text     = new("to_text()")

.todoObject



466
# File 'lib/mq/query.rb', line 466

def todo       = new(".todo")

.tomlObject



453
# File 'lib/mq/query.rb', line 453

def toml       = new(".toml")

.urlObject



510
# File 'lib/mq/query.rb', line 510

def url        = new(".url")

.uuidObject

--- Value generators (usable as query starting points) ---



539
# File 'lib/mq/query.rb', line 539

def uuid        = new("uuid()")

.uuid_v4Object



540
# File 'lib/mq/query.rb', line 540

def uuid_v4     = new("uuid_v4()")

.uuid_v7Object



541
# File 'lib/mq/query.rb', line 541

def uuid_v7     = new("uuid_v7()")

.valueObject

--- Attribute selectors (as standalone starting points) ---



505
# File 'lib/mq/query.rb', line 505

def value      = new(".value")

.yamlObject



454
# File 'lib/mq/query.rb', line 454

def yaml       = new(".yaml")

Instance Method Details

#absObject



196
# File 'lib/mq/query.rb', line 196

def abs            = pipe_with("abs()")

#add(other) ⇒ Object



78
79
80
# File 'lib/mq/query.rb', line 78

def add(other)
  pipe_with("add(#{other.inspect})")
end

#alignObject



330
# File 'lib/mq/query.rb', line 330

def align          = pipe_with(".align")

#altObject



319
# File 'lib/mq/query.rb', line 319

def alt            = pipe_with(".alt")

#ascii_downcaseObject



150
# File 'lib/mq/query.rb', line 150

def ascii_downcase = pipe_with("ascii_downcase()")

#ascii_upcaseObject



151
# File 'lib/mq/query.rb', line 151

def ascii_upcase   = pipe_with("ascii_upcase()")

#attr(name) ⇒ Object



337
338
339
# File 'lib/mq/query.rb', line 337

def attr(name)
  pipe_with("attr(#{name.inspect})")
end

#base64Object



229
# File 'lib/mq/query.rb', line 229

def base64         = pipe_with("base64()")

#base64dObject



230
# File 'lib/mq/query.rb', line 230

def base64d        = pipe_with("base64d()")

#base64urlObject



231
# File 'lib/mq/query.rb', line 231

def base64url      = pipe_with("base64url()")

#base64urldObject



232
# File 'lib/mq/query.rb', line 232

def base64urld     = pipe_with("base64urld()")

#basenameObject



249
# File 'lib/mq/query.rb', line 249

def basename       = pipe_with("basename()")

#capture(pattern) ⇒ Object



188
189
190
# File 'lib/mq/query.rb', line 188

def capture(pattern)
  pipe_with("capture(#{pattern.inspect})")
end

#ceilObject



197
# File 'lib/mq/query.rb', line 197

def ceil           = pipe_with("ceil()")

#checkedObject



327
# File 'lib/mq/query.rb', line 327

def checked        = pipe_with(".checked")

#childrenObject



93
# File 'lib/mq/query.rb', line 93

def children       = pipe_with(".children")

#coalesce(default) ⇒ Object



225
226
227
# File 'lib/mq/query.rb', line 225

def coalesce(default)
  pipe_with("coalesce(#{default.inspect})")
end

#columnObject



328
# File 'lib/mq/query.rb', line 328

def column         = pipe_with(".column")

#compactObject



87
# File 'lib/mq/query.rb', line 87

def compact        = pipe_with("compact")

#css(selector) ⇒ Object

Returns the outer HTML of every element in the current (raw) HTML string matching the CSS selector, as an array of strings.



266
267
268
# File 'lib/mq/query.rb', line 266

def css(selector)
  pipe_with("css(#{selector.inspect})")
end

#css_attr(selector, name) ⇒ Object

Returns the value of attribute name for every element in the current (raw) HTML string matching the CSS selector, as an array.



278
279
280
# File 'lib/mq/query.rb', line 278

def css_attr(selector, name)
  pipe_with("css_attr(#{selector.inspect}, #{name.inspect})")
end

#css_text(selector) ⇒ Object

Returns the text content of every element in the current (raw) HTML string matching the CSS selector, as an array of strings.



272
273
274
# File 'lib/mq/query.rb', line 272

def css_text(selector)
  pipe_with("css_text(#{selector.inspect})")
end

#debugObject



223
# File 'lib/mq/query.rb', line 223

def debug          = pipe_with("debug")

#del(value) ⇒ Object



127
128
129
# File 'lib/mq/query.rb', line 127

def del(value)
  pipe_with("del(#{value.inspect})")
end

#depthObject



323
# File 'lib/mq/query.rb', line 323

def depth          = pipe_with(".depth")

#dirnameObject



250
# File 'lib/mq/query.rb', line 250

def dirname        = pipe_with("dirname()")

#downcaseObject



148
# File 'lib/mq/query.rb', line 148

def downcase       = pipe_with("downcase()")

#emptyObject



84
# File 'lib/mq/query.rb', line 84

def empty          = pipe_with("is_empty()")

#entriesObject



92
# File 'lib/mq/query.rb', line 92

def entries        = pipe_with("entries")

#expObject



204
# File 'lib/mq/query.rb', line 204

def exp            = pipe_with("exp()")

#explodeObject



152
# File 'lib/mq/query.rb', line 152

def explode        = pipe_with("explode()")

#extnameObject



251
# File 'lib/mq/query.rb', line 251

def extname        = pipe_with("extname()")

#fenceObject



317
# File 'lib/mq/query.rb', line 317

def fence          = pipe_with(".fence")

#firstObject



82
# File 'lib/mq/query.rb', line 82

def first          = pipe_with("first")

#flattenObject



89
# File 'lib/mq/query.rb', line 89

def flatten        = pipe_with("flatten")

#floorObject



198
# File 'lib/mq/query.rb', line 198

def floor          = pipe_with("floor()")

#from_hexObject



236
# File 'lib/mq/query.rb', line 236

def from_hex       = pipe_with("from_hex()")

#get(key) ⇒ Object



282
283
284
# File 'lib/mq/query.rb', line 282

def get(key)
  pipe_with("get(#{key.inspect})")
end

#get_path(path) ⇒ Object

Retrieves a nested value by following an array of keys/indices.



291
292
293
# File 'lib/mq/query.rb', line 291

def get_path(path)
  pipe_with("get_path(#{path.inspect})")
end

#get_titleObject



345
# File 'lib/mq/query.rb', line 345

def get_title      = pipe_with("get_title")

#get_urlObject



346
# File 'lib/mq/query.rb', line 346

def get_url        = pipe_with("get_url")

#glob_match(path) ⇒ Object

Treats the current string as a glob pattern (e.g. ".md", "docs/**/.rs") and returns whether it matches path.



260
261
262
# File 'lib/mq/query.rb', line 260

def glob_match(path)
  pipe_with("glob_match(#{path.inspect})")
end

#gsub(pattern, replacement) ⇒ Object



176
177
178
# File 'lib/mq/query.rb', line 176

def gsub(pattern, replacement)
  pipe_with("gsub(#{pattern.inspect}, #{replacement.inspect})")
end

#html_escapeObject



157
# File 'lib/mq/query.rb', line 157

def html_escape    = pipe_with("html_escape()")

#html_unescapeObject



158
# File 'lib/mq/query.rb', line 158

def html_unescape  = pipe_with("html_unescape()")

#identObject



321
# File 'lib/mq/query.rb', line 321

def ident          = pipe_with(".ident")

#implodeObject



153
# File 'lib/mq/query.rb', line 153

def implode        = pipe_with("implode()")

#index(value) ⇒ Object



119
120
121
# File 'lib/mq/query.rb', line 119

def index(value)
  pipe_with("index(#{value.inspect})")
end

#insert(idx, val) ⇒ Object



131
132
133
# File 'lib/mq/query.rb', line 131

def insert(idx, val)
  pipe_with("insert(#{idx}, #{val.inspect})")
end

#internObject



156
# File 'lib/mq/query.rb', line 156

def intern         = pipe_with("intern()")

#is_nanObject



206
# File 'lib/mq/query.rb', line 206

def is_nan         = pipe_with("is_nan()")

#item_indexObject



325
# File 'lib/mq/query.rb', line 325

def item_index     = pipe_with(".index")

#join(separator) ⇒ Object



99
100
101
# File 'lib/mq/query.rb', line 99

def join(separator)
  pipe_with("join(#{separator.inspect})")
end

#keysObject



90
# File 'lib/mq/query.rb', line 90

def keys           = pipe_with("keys")

#labelObject



322
# File 'lib/mq/query.rb', line 322

def label          = pipe_with(".label")

#langObject



315
# File 'lib/mq/query.rb', line 315

def lang           = pipe_with(".lang")

#lastObject



83
# File 'lib/mq/query.rb', line 83

def last           = pipe_with("last")

#lenObject



75
# File 'lib/mq/query.rb', line 75

def len            = pipe_with("len()")

#lengthObject



74
# File 'lib/mq/query.rb', line 74

def length         = pipe_with("len()")

#levelObject



324
# File 'lib/mq/query.rb', line 324

def level          = pipe_with(".level")

#limit(n) ⇒ Object



107
108
109
# File 'lib/mq/query.rb', line 107

def limit(n)
  pipe_with("take(#{n})")
end

#lnObject



202
# File 'lib/mq/query.rb', line 202

def ln             = pipe_with("ln()")

#log10Object



203
# File 'lib/mq/query.rb', line 203

def log10          = pipe_with("log10()")

#ltrimObject



146
# File 'lib/mq/query.rb', line 146

def ltrim          = pipe_with("ltrim()")

#map(filter = nil) { ... } ⇒ Query

Append a map() transformation.

Parameters:

  • filter (Filter, String, nil) (defaults to: nil)

    filter expression (or use block)

Yields:

Returns:



58
59
60
61
# File 'lib/mq/query.rb', line 58

def map(filter = nil, &block)
  filter_str = resolve_filter(filter, &block)
  pipe_with("map(#{filter_str})")
end

#max(other) ⇒ Object



216
217
218
# File 'lib/mq/query.rb', line 216

def max(other)
  pipe_with("max(#{other})")
end

#md5Object



233
# File 'lib/mq/query.rb', line 233

def md5            = pipe_with("md5()")

#mdx_nameObject



331
# File 'lib/mq/query.rb', line 331

def mdx_name       = pipe_with(".name")

#metaObject



316
# File 'lib/mq/query.rb', line 316

def meta           = pipe_with(".meta")

#min(other) ⇒ Object



212
213
214
# File 'lib/mq/query.rb', line 212

def min(other)
  pipe_with("min(#{other})")
end

#negate_valObject



205
# File 'lib/mq/query.rb', line 205

def negate_val     = pipe_with("negate()")

#nth(n) ⇒ Object



103
104
105
# File 'lib/mq/query.rb', line 103

def nth(n)
  pipe_with("get(#{n})")
end

#orderedObject



326
# File 'lib/mq/query.rb', line 326

def ordered        = pipe_with(".ordered")

#path_join(other) ⇒ Object



254
255
256
# File 'lib/mq/query.rb', line 254

def path_join(other)
  pipe_with("path_join(#{other.inspect})")
end

#pathsObject

Returns an array of leaf-path arrays for the current value.



302
303
304
# File 'lib/mq/query.rb', line 302

def paths
  pipe_with("paths()")
end

#pow(n) ⇒ Object



208
209
210
# File 'lib/mq/query.rb', line 208

def pow(n)
  pipe_with("pow(#{n})")
end

#property(key) ⇒ Object

Access a dict property by key (generates ."key" selector)



307
308
309
# File 'lib/mq/query.rb', line 307

def property(key)
  pipe_with(".\"#{key}\"")
end

#randObject



243
# File 'lib/mq/query.rb', line 243

def rand           = pipe_with("rand()")

#rand_int(min, max) ⇒ Object



245
246
247
# File 'lib/mq/query.rb', line 245

def rand_int(min, max)
  pipe_with("rand_int(#{min}, #{max})")
end

#range(n) ⇒ Object



111
112
113
# File 'lib/mq/query.rb', line 111

def range(n)
  pipe_with("range(#{n})")
end

#repeat(n) ⇒ Object



135
136
137
# File 'lib/mq/query.rb', line 135

def repeat(n)
  pipe_with("repeat(#{n})")
end

#replace(from, to) ⇒ Object



180
181
182
# File 'lib/mq/query.rb', line 180

def replace(from, to)
  pipe_with("replace(#{from.inspect}, #{to.inspect})")
end

#reverseObject



85
# File 'lib/mq/query.rb', line 85

def reverse        = pipe_with("reverse")

#rindex(value) ⇒ Object



123
124
125
# File 'lib/mq/query.rb', line 123

def rindex(value)
  pipe_with("rindex(#{value.inspect})")
end

#roundObject



199
# File 'lib/mq/query.rb', line 199

def round          = pipe_with("round()")

#rowObject



329
# File 'lib/mq/query.rb', line 329

def row            = pipe_with(".row")

#rtrimObject



147
# File 'lib/mq/query.rb', line 147

def rtrim          = pipe_with("rtrim()")

#sample(n) ⇒ Object



141
142
143
# File 'lib/mq/query.rb', line 141

def sample(n)
  pipe_with("sample(#{n})")
end

#sanitize_htmlObject



159
# File 'lib/mq/query.rb', line 159

def sanitize_html  = pipe_with("sanitize_html()")

#scan(pattern) ⇒ Object



192
193
194
# File 'lib/mq/query.rb', line 192

def scan(pattern)
  pipe_with("scan(#{pattern.inspect})")
end

#select(filter = nil) { ... } ⇒ Query

Append a select() filter.

Parameters:

  • filter (Filter, String, nil) (defaults to: nil)

    filter expression (or use block)

Yields:

Returns:



48
49
50
51
# File 'lib/mq/query.rb', line 48

def select(filter = nil, &block)
  filter_str = resolve_filter(filter, &block)
  pipe_with("select(#{filter_str})")
end

#set(key, val) ⇒ Object



286
287
288
# File 'lib/mq/query.rb', line 286

def set(key, val)
  pipe_with("set(#{key.inspect}, #{val.inspect})")
end

#set_attr(name, val) ⇒ Object



341
342
343
# File 'lib/mq/query.rb', line 341

def set_attr(name, val)
  pipe_with("set_attr(#{name.inspect}, #{val.inspect})")
end

#set_check(val) ⇒ Object



348
349
350
# File 'lib/mq/query.rb', line 348

def set_check(val)
  pipe_with("set_check(#{val})")
end

#set_code_block_lang(lang) ⇒ Object



356
357
358
# File 'lib/mq/query.rb', line 356

def set_code_block_lang(lang)
  pipe_with("set_code_block_lang(#{lang.inspect})")
end

#set_list_ordered(val) ⇒ Object



360
361
362
# File 'lib/mq/query.rb', line 360

def set_list_ordered(val)
  pipe_with("set_list_ordered(#{val})")
end

#set_path(path, new_value) ⇒ Object

Sets a nested value by following an array of keys/indices, creating missing intermediate dicts/arrays automatically.



297
298
299
# File 'lib/mq/query.rb', line 297

def set_path(path, new_value)
  pipe_with("set_path(#{path.inspect}, #{new_value.inspect})")
end

#set_ref(ref) ⇒ Object



352
353
354
# File 'lib/mq/query.rb', line 352

def set_ref(ref)
  pipe_with("set_ref(#{ref.inspect})")
end

#sha256Object



234
# File 'lib/mq/query.rb', line 234

def sha256         = pipe_with("sha256()")

#sha512Object



235
# File 'lib/mq/query.rb', line 235

def sha512         = pipe_with("sha512()")

#shuffleObject



139
# File 'lib/mq/query.rb', line 139

def shuffle        = pipe_with("shuffle()")

#slice(start, stop) ⇒ Object



115
116
117
# File 'lib/mq/query.rb', line 115

def slice(start, stop)
  pipe_with("slice(#{start}, #{stop})")
end

#sortObject



86
# File 'lib/mq/query.rb', line 86

def sort           = pipe_with("sort")

#split(separator) ⇒ Object



95
96
97
# File 'lib/mq/query.rb', line 95

def split(separator)
  pipe_with("split(#{separator.inspect})")
end

#sqrtObject



201
# File 'lib/mq/query.rb', line 201

def sqrt           = pipe_with("sqrt()")

#stemObject



252
# File 'lib/mq/query.rb', line 252

def stem           = pipe_with("stem()")

#strip_tagsObject



160
# File 'lib/mq/query.rb', line 160

def strip_tags     = pipe_with("strip_tags()")

#test(pattern) ⇒ Object



184
185
186
# File 'lib/mq/query.rb', line 184

def test(pattern)
  pipe_with("test(#{pattern.inspect})")
end

#titleObject



320
# File 'lib/mq/query.rb', line 320

def title          = pipe_with(".title")

#to_arrayObject



70
# File 'lib/mq/query.rb', line 70

def to_array       = pipe_with("to_array()")

#to_booleanObject



69
# File 'lib/mq/query.rb', line 69

def to_boolean     = pipe_with("to_boolean()")

#to_bytesObject



71
# File 'lib/mq/query.rb', line 71

def to_bytes       = pipe_with("to_bytes()")

#to_code(lang = nil) ⇒ Object

Convert current value to a code block with the given language.



365
366
367
# File 'lib/mq/query.rb', line 365

def to_code(lang = nil)
  lang ? pipe_with("to_code(#{lang.inspect})") : pipe_with("to_code(null)")
end

#to_code_inlineObject



369
# File 'lib/mq/query.rb', line 369

def to_code_inline = pipe_with("to_code_inline()")

#to_emObject



401
# File 'lib/mq/query.rb', line 401

def to_em          = pipe_with("to_em()")

#to_h(depth) ⇒ Object

Convert current value to a heading of the given depth (1-6).



372
373
374
# File 'lib/mq/query.rb', line 372

def to_h(depth)
  pipe_with("to_h(#{depth})")
end

#to_hexObject



237
# File 'lib/mq/query.rb', line 237

def to_hex         = pipe_with("to_hex()")

#to_hex_strObject



238
# File 'lib/mq/query.rb', line 238

def to_hex_str     = pipe_with("to_hex()")

#to_hrObject



376
# File 'lib/mq/query.rb', line 376

def to_hr          = pipe_with("to_hr()")

#to_htmlObject



66
# File 'lib/mq/query.rb', line 66

def to_html        = pipe_with("to_html()")

#to_image(url, img_alt = nil, img_title = "") ⇒ Object

Create an image node. With all three args no auto-prepend occurs. With two args the current value becomes the alt text.



390
391
392
393
394
395
396
# File 'lib/mq/query.rb', line 390

def to_image(url, img_alt = nil, img_title = "")
  if img_alt
    pipe_with("to_image(#{url.inspect}, #{img_alt.inspect}, #{img_title.inspect})")
  else
    pipe_with("to_image(#{url.inspect}, #{img_title.inspect})")
  end
end

Create a link node. With all three args no auto-prepend occurs. With two args the current value becomes the link text.



380
381
382
383
384
385
386
# File 'lib/mq/query.rb', line 380

def to_link(url, text = nil, link_title = "")
  if text
    pipe_with("to_link(#{url.inspect}, #{text.inspect}, #{link_title.inspect})")
  else
    pipe_with("to_link(#{url.inspect}, #{link_title.inspect})")
  end
end

#to_markdownObject



64
# File 'lib/mq/query.rb', line 64

def to_markdown    = pipe_with("to_markdown()")

#to_markdown_stringObject



72
# File 'lib/mq/query.rb', line 72

def to_markdown_string = pipe_with("to_markdown_string()")

#to_mathObject



398
# File 'lib/mq/query.rb', line 398

def to_math        = pipe_with("to_math()")

#to_math_inlineObject



399
# File 'lib/mq/query.rb', line 399

def to_math_inline = pipe_with("to_math_inline()")

#to_md_list(list_level) ⇒ Object

Convert current value to a list item at the given nesting level.



405
406
407
# File 'lib/mq/query.rb', line 405

def to_md_list(list_level)
  pipe_with("to_md_list(#{list_level})")
end

#to_md_name(node_name) ⇒ Object

Convert current value to a markdown element with the given node name.



410
411
412
# File 'lib/mq/query.rb', line 410

def to_md_name(node_name)
  pipe_with("to_md_name(#{node_name.inspect})")
end

#to_md_table_cell(content, r, c) ⇒ Object

Build a table cell with content, row index, and column index.



420
421
422
# File 'lib/mq/query.rb', line 420

def to_md_table_cell(content, r, c)
  pipe_with("to_md_table_cell(#{content.inspect}, #{r}, #{c})")
end

#to_md_table_row(*cells) ⇒ Object

Build a table row from the given cell values.



415
416
417
# File 'lib/mq/query.rb', line 415

def to_md_table_row(*cells)
  pipe_with("to_md_table_row(#{cells.map(&:inspect).join(', ')})")
end

#to_md_textObject



402
# File 'lib/mq/query.rb', line 402

def to_md_text     = pipe_with("to_md_text()")

#to_mdxObject



65
# File 'lib/mq/query.rb', line 65

def to_mdx         = pipe_with("to_mdx()")

#to_numberObject



68
# File 'lib/mq/query.rb', line 68

def to_number      = pipe_with("to_number()")

#to_queryString Also known as: to_s

Returns the mq query string.

Returns:

  • (String)


426
# File 'lib/mq/query.rb', line 426

def to_query = @expr

#to_stringObject



67
# File 'lib/mq/query.rb', line 67

def to_string      = pipe_with("to_string()")

#to_strongObject



400
# File 'lib/mq/query.rb', line 400

def to_strong      = pipe_with("to_strong()")

#to_textObject



63
# File 'lib/mq/query.rb', line 63

def to_text        = pipe_with("to_text()")

#token_count(model = nil) ⇒ Object

Estimates (or, when mq was built with tiktoken support, exactly counts) the LLM tokens the current string would consume. model is optional.



172
173
174
# File 'lib/mq/query.rb', line 172

def token_count(model = nil)
  model ? pipe_with("token_count(#{model.inspect})") : pipe_with("token_count()")
end

#trimObject



145
# File 'lib/mq/query.rb', line 145

def trim           = pipe_with("trim()")

#truncObject



200
# File 'lib/mq/query.rb', line 200

def trunc          = pipe_with("trunc()")

#truncate(len, ellipsis) ⇒ Object



166
167
168
# File 'lib/mq/query.rb', line 166

def truncate(len, ellipsis)
  pipe_with("truncate(#{len}, #{ellipsis.inspect})")
end

#typeObject

--- Type / logic ---



222
# File 'lib/mq/query.rb', line 222

def type           = pipe_with("type")

#uniqObject



88
# File 'lib/mq/query.rb', line 88

def uniq           = pipe_with("uniq")

#upcaseObject



149
# File 'lib/mq/query.rb', line 149

def upcase         = pipe_with("upcase()")

#update(content) ⇒ Object



333
334
335
# File 'lib/mq/query.rb', line 333

def update(content)
  pipe_with("update(#{content.inspect})")
end

#urlObject



318
# File 'lib/mq/query.rb', line 318

def url            = pipe_with(".url")

#url_decodeObject



155
# File 'lib/mq/query.rb', line 155

def url_decode     = pipe_with("url_decode()")

#url_encodeObject



154
# File 'lib/mq/query.rb', line 154

def url_encode     = pipe_with("url_encode()")

#utf8bytelenObject



76
# File 'lib/mq/query.rb', line 76

def utf8bytelen    = pipe_with("utf8bytelen()")

#uuidObject



240
# File 'lib/mq/query.rb', line 240

def uuid           = pipe_with("uuid()")

#uuid_v4Object



241
# File 'lib/mq/query.rb', line 241

def uuid_v4        = pipe_with("uuid_v4()")

#uuid_v7Object



242
# File 'lib/mq/query.rb', line 242

def uuid_v7        = pipe_with("uuid_v7()")

#valueObject

Attribute selectors (access attributes of selected nodes) These generate attribute selector syntax (.url, .lang, etc.)



314
# File 'lib/mq/query.rb', line 314

def value          = pipe_with(".value")

#valuesObject



91
# File 'lib/mq/query.rb', line 91

def values         = pipe_with("values")

#word_wrap(width) ⇒ Object



162
163
164
# File 'lib/mq/query.rb', line 162

def word_wrap(width)
  pipe_with("word_wrap(#{width})")
end

#|(other) ⇒ Query

Pipe two queries together using the | operator.

Parameters:

Returns:



39
40
41
# File 'lib/mq/query.rb', line 39

def |(other)
  self.class.new("#{@expr} | #{other.to_query}")
end