HWP Format Language - 123jimin/node-hwp GitHub Wiki

์—ฌ๋Ÿฌ ๋ ˆ์ฝ”๋“œ์™€ HWPML (์ดํ•˜ HML) ๋…ธ๋“œ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์–ธ์–ด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์–ธ์–ด์— ๋”ฐ๋ผ ํ˜•์‹ ํŒŒ์ผ (format/node.format, format/record.format) ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ๋ฒ•์€ format/format.jison์— ๊ธฐ์ˆ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฌธ๋ฒ•์ด ๊ตฌ๋ฆฐ ์  ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.)

generate.js๋Š” format์— ์žˆ๋Š” ๊ฒƒ๋“ค๋กœ๋ถ€ํ„ฐ HWP ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ์ธ lib/hwpdata.js๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

enum

HWP 5.0 ๋ฌธ์„œ์˜ 4.1.5์˜ ํ‘œ 21๊ณผ, HWPML ๋ฌธ์„œ์˜ 2.2์˜ LineWidth์™€ ๊ฐ™์ด, ๋ช‡ ๊ฐ€์ง€ ์†์„ฑ ๊ฐ’์€ enum๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋˜ํ•œ ์ด๊ฒƒ์„ ์ด์šฉํ•ด HWP์™€ HML๊ฐ„์˜ ๋ณ€ํ™˜์„ ์กฐ๊ธˆ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. enum์€ ์ด๋Ÿฌํ•œ ๊ฒƒ์„ ๊ฐ„๋‹จํžˆ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

enum ENUM_NAME {
    FirstThing; SecondThing; "ThirdThing"; null; FifthThing;
}

HWPML์—์„œ FirstThing์€ HWP์˜ 0๊ณผ ๋Œ€์‘๋ฉ๋‹ˆ๋‹ค.

HML ๋…ธ๋“œ

node๋Š” HML์˜ ๋…ธ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์œผ๋กœ, ๊ฐ node์— ์–ด๋– ํ•œ ์†์„ฑ๋“ค์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ธฐ์ˆ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์ด๋Ÿฐ ๊ฒƒ์€ DTD๋‚˜ ๊ทธ์™€ ๋น„์Šทํ•œ ๊ฒƒ์„ ์ด์šฉํ•ด ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ์ œ์ผ ๋‚ซ์ง€๋งŒ, HML์˜ DTD๋ฅผ ๊ตฌํ•  ์ˆ˜ ์—†์–ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋Ÿฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

node NODE_NAME {
    String this-is-a-string;
    Int this-is-an-integer default="42";
    Boolean this-is-a-boolean;
}

ํƒœ๊ทธ

tag์™€ tago๋Š” HWP 5.0์˜ ๋ ˆ์ฝ”๋“œ์™€ ๊ทธ ๋ ˆ์ฝ”๋“œ์˜ ํƒœ๊ทธ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

tag NAME 42๋Š” NAME ๋ ˆ์ฝ”๋“œ์˜ ํƒœ๊ทธ๊ฐ’์ด 42์ž„์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, tago FOO 42 BAR๋Š” BAR ๋ ˆ์ฝ”๋“œ์˜ ํƒœ๊ทธ๊ฐ’์ด FOO ๋ ˆ์ฝ”๋“œ์˜ ํƒœ๊ทธ๊ฐ’ + 42์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. (HWP_BEGIN๊ฐ™์€ ๊ฐ’์„ ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์„œ์— ์ ํžŒ ๊ฐ’๋“ค์„ ์˜ฎ๊ธฐ๊ธฐ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ)

๋ ˆ์ฝ”๋“œ

record๋Š” HWP 5.0์˜ ๋ ˆ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.