1
0
Fork 0

Merge branch 'master' into doc/master

Conflicts:
	Makefile
closure/master
Mike Gerwitz 2011-03-11 19:56:23 -05:00
commit c1ddca1a3d
2 changed files with 69 additions and 61 deletions

View File

@ -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
View File

@ -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.