commit
c1ddca1a3d
21
Makefile
21
Makefile
|
@ -17,6 +17,9 @@ PATH_MANUAL_TEXI=${PATH_DOC}/manual.texi
|
||||||
|
|
||||||
COMBINE=${PATH_TOOLS}/combine
|
COMBINE=${PATH_TOOLS}/combine
|
||||||
|
|
||||||
|
TESTS_JS := $(shell find "./test" -name 'test-*.js')
|
||||||
|
TESTS_SHELL := $(shell find "./test" -name 'test-[^\.]*')
|
||||||
|
|
||||||
|
|
||||||
.PHONY: test doc
|
.PHONY: test doc
|
||||||
|
|
||||||
|
@ -26,23 +29,21 @@ all: combine doc
|
||||||
|
|
||||||
# create build dir
|
# create build dir
|
||||||
mkbuild:
|
mkbuild:
|
||||||
@mkdir -p "${PATH_BUILD}"
|
mkdir -p "${PATH_BUILD}"
|
||||||
|
|
||||||
# combine all modules into easily redistributable ease.js file (intended for
|
# combine all modules into easily redistributable ease.js file (intended for
|
||||||
# browser)
|
# browser)
|
||||||
combine: mkbuild
|
combine: mkbuild
|
||||||
${COMBINE} > "${PATH_COMBINE_OUTPUT}"
|
${COMBINE} > "${PATH_COMBINE_OUTPUT}"
|
||||||
INC_TEST=1 "${COMBINE}" > "${PATH_COMBINE_OUTPUT_FULL}"
|
INC_TEST=1 "${COMBINE}" > "${PATH_COMBINE_OUTPUT_FULL}"
|
||||||
@cp "${PATH_BROWSER_TEST}" "${PATH_BUILD}"
|
cp "${PATH_BROWSER_TEST}" "${PATH_BUILD}"
|
||||||
|
|
||||||
# run tests
|
# run tests
|
||||||
test: default
|
test: default $(TESTS_JS) $(TESTS_SHELL)
|
||||||
for test in `find ./test -name 'test-*.js'`; do \
|
test-%.js: default
|
||||||
node $${test}; \
|
node $@
|
||||||
done; \
|
test-%: default
|
||||||
for test in `find ./test -regex '.*/test-[^\.]*'`; do \
|
./$@
|
||||||
./$$test; \
|
|
||||||
done;
|
|
||||||
|
|
||||||
# generate texinfo documentation (twice to generate TOC), then remove the extra
|
# generate texinfo documentation (twice to generate TOC), then remove the extra
|
||||||
# files that were generated
|
# files that were generated
|
||||||
|
@ -57,7 +58,7 @@ doc: mkbuild
|
||||||
! -name '*.pdf' -a \
|
! -name '*.pdf' -a \
|
||||||
! -name '*.css' \
|
! -name '*.css' \
|
||||||
| xargs rm
|
| xargs rm
|
||||||
@mv -f "${PATH_DOC}"/*.pdf "${PATH_DOC_OUTPUT}"
|
mv -f "${PATH_DOC}"/*.pdf "${PATH_DOC_OUTPUT}"
|
||||||
cd "${PATH_DOC}"; \
|
cd "${PATH_DOC}"; \
|
||||||
makeinfo -o "${PATH_DOC_OUTPUT_INFO}" "${PATH_MANUAL_TEXI}"; \
|
makeinfo -o "${PATH_DOC_OUTPUT_INFO}" "${PATH_MANUAL_TEXI}"; \
|
||||||
makeinfo --plain "${PATH_MANUAL_TEXI}" > "${PATH_DOC_OUTPUT_PLAIN}"; \
|
makeinfo --plain "${PATH_MANUAL_TEXI}" > "${PATH_DOC_OUTPUT_PLAIN}"; \
|
||||||
|
|
109
TODO
109
TODO
|
@ -2,61 +2,68 @@
|
||||||
#
|
#
|
||||||
# This is by no means a complete list.
|
# This is by no means a complete list.
|
||||||
|
|
||||||
Misc
|
[ target: 0.1.0 ]
|
||||||
- Deep cloning level for util.clone()
|
Misc
|
||||||
- Optional preprocessing support
|
- Class module is becoming too large; refactor
|
||||||
- Ability to disable features that wouldn't impact base functionality
|
|
||||||
- For example, one may wish to have type checking enabled for development
|
|
||||||
but may not want the performance hit for their production code.
|
|
||||||
Disabling type checking, as long as the proper types are passed to the
|
|
||||||
functions, will not impact function logic.
|
|
||||||
- Should be able to run source file without preprocessing, so C-style macros
|
|
||||||
cannot be used (# is not a valid token)
|
|
||||||
- Class module is becoming too large; refactor
|
|
||||||
|
|
||||||
Member Keywords
|
Member Keywords
|
||||||
- Restrictions; throw exceptions when unknown keywords are used
|
- Restrictions; throw exceptions when unknown keywords are used
|
||||||
- const; immutable properties
|
- Concrete types must implement member with same visibility, or greater
|
||||||
- final; methods cannot be overridden by subtypes
|
visibility, than the abstract implementation defined
|
||||||
- static; method/property accessible via class definition
|
|
||||||
- event; designates a supported event
|
|
||||||
- Concrete types must implement member with same visibility, or greater
|
|
||||||
visibility, than the abstract implementation defined
|
|
||||||
|
|
||||||
Typing
|
Documentation
|
||||||
- Support JSDoc-style type definitions for parameters
|
- Ensure all docblocks contain only valid JSDoc tags
|
||||||
- Syntax:
|
- Generate documentation
|
||||||
[ 'string', 'number', function( name, age ) {} ]
|
- Add to Makefile
|
||||||
- Optional; if a function is simply provided, rather than an array, no type
|
- Begin technical documentation for developers
|
||||||
checking will be performed
|
- Include designs and project decisions
|
||||||
- For abstract methods, simply leave the function off (last index)
|
- Wiki, LaTeX, Texinfo?
|
||||||
- Provide option to throw errors on any type mismatch
|
- API documentation
|
||||||
- Auto-cast, unless casting is impossible, then throw error
|
- Wiki, LaTeX, Texinfo?
|
||||||
|
|
||||||
Reflection
|
Client-Side
|
||||||
- Rather than exposing internal data via properties, fully encapsulate
|
- implement assert.deepEqual()
|
||||||
- Classes, not just modules like the rest of ease.js
|
|
||||||
|
|
||||||
Patterns
|
|
||||||
- Provide automated means to generate classes for common patterns (primarily
|
|
||||||
GoF)
|
|
||||||
- Generating classes at runtime gives us the powerful benefit of being able
|
|
||||||
to generate the classes however we wish. Therefore, we do not need code
|
|
||||||
generation techniques to generate classes. We can simply call a method.
|
|
||||||
This will remove repetitive tasks and duplicate code needed to properly
|
|
||||||
implement the various patterns, and serve as an excellent tool for those
|
|
||||||
unfamiliar with them.
|
|
||||||
|
|
||||||
Documentation
|
[ future ]
|
||||||
- Ensure all docblocks contain only valid JSDoc tags
|
Misc
|
||||||
- Generate documentation
|
- Deep cloning level for util.clone()
|
||||||
- Add to Makefile
|
- Optional preprocessing support
|
||||||
- Begin technical documentation for developers
|
- Ability to disable features that wouldn't impact base functionality
|
||||||
- Include designs and project decisions
|
- For example, one may wish to have type checking enabled for development
|
||||||
- Wiki, LaTeX, Texinfo?
|
but may not want the performance hit for their production code.
|
||||||
- API documentation
|
Disabling type checking, as long as the proper types are passed to the
|
||||||
- Wiki, LaTeX, Texinfo?
|
functions, will not impact function logic.
|
||||||
|
- Should be able to run source file without preprocessing, so C-style macros
|
||||||
|
cannot be used (# is not a valid token)
|
||||||
|
|
||||||
Client-Side
|
Member Keywords
|
||||||
- implement assert.deepEqual()
|
- const; immutable properties
|
||||||
|
- final; methods cannot be overridden by subtypes
|
||||||
|
- static; method/property accessible via class definition
|
||||||
|
- event; designates a supported event
|
||||||
|
|
||||||
|
Typing
|
||||||
|
- Support JSDoc-style type definitions for parameters
|
||||||
|
- Syntax:
|
||||||
|
[ 'string', 'number', function( name, age ) {} ]
|
||||||
|
- Optional; if a function is simply provided, rather than an array, no type
|
||||||
|
checking will be performed
|
||||||
|
- For abstract methods, simply leave the function off (last index)
|
||||||
|
- Provide option to throw errors on any type mismatch
|
||||||
|
- Auto-cast, unless casting is impossible, then throw error
|
||||||
|
|
||||||
|
Reflection
|
||||||
|
- Rather than exposing internal data via properties, fully encapsulate
|
||||||
|
- Classes, not just modules like the rest of ease.js
|
||||||
|
|
||||||
|
Patterns
|
||||||
|
- Provide automated means to generate classes for common patterns (primarily
|
||||||
|
GoF)
|
||||||
|
- Generating classes at runtime gives us the powerful benefit of being able
|
||||||
|
to generate the classes however we wish. Therefore, we do not need code
|
||||||
|
generation techniques to generate classes. We can simply call a method.
|
||||||
|
This will remove repetitive tasks and duplicate code needed to properly
|
||||||
|
implement the various patterns, and serve as an excellent tool for those
|
||||||
|
unfamiliar with them.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue