mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-19 06:20:38 -07:00
refactor: Tag class support in registerTag()
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import { isNil, isString, isObject, isArray, isIterable, toValue } from './underscore'
|
||||
|
||||
export function toEnumerable (val: any) {
|
||||
export function toEnumerable<T = unknown> (val: any): T[] {
|
||||
val = toValue(val)
|
||||
if (isArray(val)) return val
|
||||
if (isString(val) && val.length > 0) return [val]
|
||||
if (isString(val) && val.length > 0) return [val] as unknown as T[]
|
||||
if (isIterable(val)) return Array.from(val)
|
||||
if (isObject(val)) return Object.keys(val).map((key) => [key, val[key]])
|
||||
if (isObject(val)) return Object.keys(val).map((key) => [key, val[key]]) as unknown as T[]
|
||||
return []
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
export * from './error'
|
||||
export * from './character'
|
||||
export * from './assert'
|
||||
export * from './literal'
|
||||
export * from './underscore'
|
||||
export * from './operator-trie'
|
||||
export * from './type-guards'
|
||||
export * from './async'
|
||||
export * from './collection'
|
||||
export * from './strftime'
|
||||
export * from './liquid-date'
|
||||
export * from './timezone-date'
|
||||
+1
-3
@@ -1,6 +1,4 @@
|
||||
import { NullDrop } from '../drop/null-drop'
|
||||
import { EmptyDrop } from '../drop/empty-drop'
|
||||
import { BlankDrop } from '../drop/blank-drop'
|
||||
import { BlankDrop, EmptyDrop, NullDrop } from '../drop'
|
||||
|
||||
const nil = new NullDrop()
|
||||
export const literalValues = {
|
||||
|
||||
@@ -1,14 +1,22 @@
|
||||
import { Operators } from '../render/operator'
|
||||
import { Operators, OperatorHandler } from '../render/operator'
|
||||
import { IDENTIFIER, TYPES } from '../util/character'
|
||||
|
||||
export interface Trie {
|
||||
[key: string]: any;
|
||||
interface TrieLeafNode {
|
||||
handler: OperatorHandler;
|
||||
end: true;
|
||||
needBoundary?: true;
|
||||
}
|
||||
|
||||
export interface Trie {
|
||||
[key: string]: Trie | TrieLeafNode;
|
||||
}
|
||||
|
||||
export type TrieNode = Trie | TrieLeafNode
|
||||
|
||||
export function createTrie (operators: Operators): Trie {
|
||||
const trie: Trie = {}
|
||||
for (const [name, handler] of Object.entries(operators)) {
|
||||
let node = trie
|
||||
let node: Trie | TrieLeafNode = trie
|
||||
|
||||
for (let i = 0; i < name.length; i++) {
|
||||
const c = name[i]
|
||||
|
||||
@@ -140,7 +140,7 @@ const formatCodes = {
|
||||
};
|
||||
(formatCodes as any).h = formatCodes.b
|
||||
|
||||
export default function (d: LiquidDate, formatStr: string) {
|
||||
export function strftime (d: LiquidDate, formatStr: string) {
|
||||
let output = ''
|
||||
let remaining = formatStr
|
||||
let match
|
||||
|
||||
+2
-12
@@ -1,15 +1,5 @@
|
||||
import { OperatorToken } from '../tokens/operator-token'
|
||||
import { DelimitedToken } from '../tokens/delimited-token'
|
||||
import { IdentifierToken } from '../tokens/identifier-token'
|
||||
import { TagToken } from '../tokens/tag-token'
|
||||
import { HTMLToken } from '../tokens/html-token'
|
||||
import { OutputToken } from '../tokens/output-token'
|
||||
import { PropertyAccessToken } from '../tokens/property-access-token'
|
||||
import { LiteralToken } from '../tokens/literal-token'
|
||||
import { QuotedToken } from '../tokens/quoted-token'
|
||||
import { NumberToken } from '../tokens/number-token'
|
||||
import { RangeToken } from '../tokens/range-token'
|
||||
import { TokenKind } from '../parser/token-kind'
|
||||
import { RangeToken, NumberToken, QuotedToken, LiteralToken, PropertyAccessToken, OutputToken, HTMLToken, TagToken, IdentifierToken, DelimitedToken, OperatorToken } from '../tokens'
|
||||
import { TokenKind } from '../parser'
|
||||
|
||||
export function isDelimitedToken (val: any): val is DelimitedToken {
|
||||
return !!(getKind(val) & TokenKind.Delimited)
|
||||
|
||||
@@ -81,7 +81,7 @@ export function isIterable (value: any): value is Iterable<any> {
|
||||
* @return {Object} Returns object.
|
||||
*/
|
||||
export function forOwn <T> (
|
||||
obj: {[key: string]: T} | undefined,
|
||||
obj: Record<string, T> | undefined,
|
||||
iteratee: ((val: T, key: string, obj: {[key: string]: T}) => boolean | void)
|
||||
) {
|
||||
obj = obj || {}
|
||||
|
||||
Reference in New Issue
Block a user