mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-15 12:20:40 -07:00
30 lines
1.4 KiB
TypeScript
30 lines
1.4 KiB
TypeScript
// quote related
|
|
const singleQuoted = /'[^']*'/
|
|
const doubleQuoted = /"[^"]*"/
|
|
export const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)
|
|
export const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'"])*`)
|
|
|
|
// basic types
|
|
export const number = /[+-]?(?:\d+\.?\d*|\.?\d+)/
|
|
export const bool = /true|false/
|
|
|
|
// property access
|
|
export const identifier = /[\w-]+[?]?/
|
|
export const subscript = new RegExp(`\\[(?:${quoted.source}|[\\w-\\.]+)\\]`)
|
|
export const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)
|
|
export const variable = new RegExp(`${identifier.source}(?:\\.${identifier.source}|${subscript.source})*`)
|
|
|
|
// range related
|
|
export const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)
|
|
export const range = new RegExp(`\\(${rangeLimit.source}\\.\\.${rangeLimit.source}\\)`)
|
|
export const rangeCapture = new RegExp(`\\((${rangeLimit.source})\\.\\.(${rangeLimit.source})\\)`)
|
|
|
|
export const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)
|
|
|
|
// full match
|
|
export const tagLine = new RegExp(`^\\s*(${identifier.source})\\s*([\\s\\S]*?)\\s*$`)
|
|
export const numberLine = new RegExp(`^${number.source}$`)
|
|
export const boolLine = new RegExp(`^${bool.source}$`, 'i')
|
|
export const quotedLine = new RegExp(`^${quoted.source}$`)
|
|
export const rangeLine = new RegExp(`^${rangeCapture.source}$`)
|