Built-ins for strings

  1. length : 길이 반환
  2. boolean
  3. "true", "false" 문자열에 대해 true, false 반환

  4. number
  5. 문자열을 숫자로 변환. 지수형 표기 인식. NaN, INF, -INF, Infinity, -Infinity 인식

  6. string
  7. 문자열 값을 반환한다. multi-type인 경우 쓸 일이 있을지도

  8. word_list
  9. FreeMarker 단어 정의의 기준. 공백 문자를 제외한 문자들의 연속

  10. 대소문자
    • cap_first
    • 첫 번째 단어의 첫번째 글자를 대문자로 변환하여 반환 ↔ uncap_first

    • capitalize
    • 각 단어의 첫글자만 대문자가 되도록 변환하여 반환

    • lower_case
    • 전부 소문자로 ↔ upper_case

  11. chop_linebreak
  12. 마지막 line-break를 제거. 없으면 그대로 반환. \n만 없애준다... \r은 그대로 남는다...

  13. trim
  14. 전후의 연속적인 공백 문자를 제거한다

  15. index_of, last_index_of
  16. 정규표현식은 지원하지 않는다

  17. contains
  18. 부분 문자열을 포함하는지 여부 반환. contains는 정규표현식 사용 불가

  19. date, time, datetime
  20. 문자열을 date, time, date-time 값으로 변환. 매개변수 없이 호출하는 경우 기본 로캐일의 기본 포맷만 인식한다

  21. starts_with, ends_with, ensure_starts_with, ensure_ends_with
  22. ensure : 없으면 concat해서 반환

  23. remove_beginning, remove_ending
  24. 해당 부분 문자열로 시작/끝나지 않음을 보장한다

  25. keep
  26. 일치하는 부분 문자열 전/후의 나머지 문자열 반환. 정규표현식 가능

    • keep_after
    • 처음 부분 문자열과 일치하는 부분까지 제거한 나머지 반환. 일치하는 부분이 없으면 빈 문자열, 부분 문자열 길이가 0이면 원본 그대로 반환
    • keep_after_last
    • 마지막으로 부분 문자열과 일치하는 부분까지 제거한 나머지 반환
    • keep_before
    • 처음 부분 문자열과 일치하는 위치 전까지 반환. 일치하는 부분이 없으면 원본 그대로, 부분 문자열 길이가 0이면 빈 문자열 반환
    • keep_before_last
    • 마지막으로 부분 문자열과 일치하는 위치 전까지 반환
  27. left_pad, right_pad
  28. 기본적으로 공백으로 채운다

  29. esc
  30. output_format이 이스케이핑 대상인 동시에 auto_esc가 꺼져있는 경우, ?esc를 호출하면 이스케이프된 문자열로 반환한다. ↔ no_esc

  31. j_string, js_string, json_string, url, url_path
  32. 각각 Java, JavaScript, JSON, url 문자열 표현에 맞게 이스케이프한다
    url_path는 '/'를 이스케이프하지 않는다

  33. matches, groups
  34. 반환 값은 multi-type
    boolean : 전체 문자열이 매칭되는지 여부
    sequence : 길이 0 이상의, 매칭되는 부분 문자열 시퀀스. 기대하는 바와는 다르게, 매칭되는 부분 문자열 전후의 다른 문자열이 포함될 수 있다

  35. replace
  36. 정규표현식 가능

  37. split
  38. 정규표현식 가능. 반환된 시퀀스의 첫 번째 문자열은 빈 문자열이 되지 않는다. 정규표현식을 사용한 경우 마지막 문자열도 빈 문자열이 되지 않는다. 빈 문자열로 분리하는 경우 각 문자들이 분리된다

  39. Common Flags
  40. Built-ini(ignore case)r(reg. exp.)m(multi-line mode)s(dot-all mode)c(whitesp. and comments)f(first only)
    replaceYesYesOnly with rOnly with rOnly with rYes
    splitYesYesOnly with rOnly with rOnly with rNo
    matchesYesIgnoredYesYesYesNo
    keep_afterYesYesYesYesYesIgnored
    keep_after_lastYesYesYesYesYesIgnored
    keep_beforeYesYesYesYesYesIgnored
    keep_before_lastYesYesYesYesYesIgnored
    ensure_starts_withYesIgnoredYesYesYesIgnored

Built-ins for numbers

  1. abs
  2. is_infinite, is_nan
  3. lower_abc, upper_abc
  4. 엑셀 열 표기처럼 1, 2, 3, ..., 27, ... 순서대로 a, b, c, ..., aa, ... 로 매핑한다

  5. round, floor, ceiling
  6. round : 끝자리가 5인 경우 올림한다

  7. string
  8. ${x?string} : ${x}와 동일
    string.currency, string.percent, string.computer
    자바 숫자 문자열 포맷을 지원한다

Built-ins for date(time)

  1. string

Built-ins for booleans

  1. c
  2. string
  3. then
  4. 삼항 연산 비슷

Built-ins for sequences

  1. size
  2. first, last
  3. reverse
  4. min, max
  5. min/max는 모든 요소가 숫자 | date-(time)일 때만 작동

  6. join
  7. join(separator[], empty_value[, list_ending]])
    * empty_value : 시퀀스가 빈 경우 대체 문자열. 기본값 ""
    * list_ending : 시퀀스가 비지 않은 경우 종결 문자열. 기본값 ""

  8. sort
  9. 모든 요소가 문자열 | 숫자 | date-(time) | boolean일 때만 작동

  10. sort_by
  11. 요소가 해시인 경우, 해시의 키를 지정하여 해당 값으로 sort 적용

  12. seq_contains
  13. 시퀀스가 해당 요소를 포함하는지 여부. Objects#equals가 아닌 == 이용

  14. seq_index_of, seq_last_index_of
  15. 요소의 순번. 없으면 -1

  16. chunk
  17. 시퀀스를 고정 길이로 잘라 반환

Built-ins for hashes

  1. keys
  2. values

Built-ins for loop variable

  1. index
  2. 0부터 시작하는 순서

  3. counter
  4. 1부터 시작하는 순서

  5. item_cycle
  6. has_next, is_first, is_last, is_even_item, is_odd_item

Etc built-ins

  1. switch
  2. switch directive의 인라인 버전. 모든 타입에 대해 작동한다

  3. byte, double, float, int, long, short
  4. number_to_date, number_to_time, number_to_datetime
  5. 숫자 변수에 대한 변환값을 반환한다. date-(time) 변수에 대해서 long을 지원한다

  6. eval
  7. FTL을 동적으로 실행하여 문자열로 반환. 따라서 평가될 문장의 결과가 자동으로 string으로 변환될 수 있어야 한다

  8. 타입 체크
  9. is_string, is_number, is_boolean, is_date_only, is_date_like, is_time, ...

  10. sequence
  11. directive에 이용할 수 있는 값을 sequence 값으로 변환. seq[index], seq?size 등을 이용할 수 있게 된다