text_ux 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +25 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +51 -0
  7. data/Rakefile +18 -0
  8. data/ext/text_ux/extconf.rb +5 -0
  9. data/ext/text_ux/text_ux.cpp +252 -0
  10. data/lib/text_ux.rb +5 -0
  11. data/lib/text_ux/version.rb +3 -0
  12. data/spec/fixtures/test.ux +0 -0
  13. data/spec/spec_helper.rb +19 -0
  14. data/spec/text_ux_spec.rb +137 -0
  15. data/text_ux.gemspec +26 -0
  16. data/vendor/ux-trie/ux-0.1.9/.lock-waf_darwin_build +8 -0
  17. data/vendor/ux-trie/ux-0.1.9/.unittest-gtest/gtest-1.6.0/fused-src/gtest/gtest-all.cc +9118 -0
  18. data/vendor/ux-trie/ux-0.1.9/.unittest-gtest/gtest-1.6.0/fused-src/gtest/gtest.h +19537 -0
  19. data/vendor/ux-trie/ux-0.1.9/.unittest-gtest/gtest-1.6.0/fused-src/gtest/gtest_main.cc +39 -0
  20. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Build.py +733 -0
  21. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Build.pyc +0 -0
  22. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/ConfigSet.py +147 -0
  23. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/ConfigSet.pyc +0 -0
  24. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Configure.py +314 -0
  25. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Configure.pyc +0 -0
  26. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Context.py +298 -0
  27. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Context.pyc +0 -0
  28. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Errors.py +37 -0
  29. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Errors.pyc +0 -0
  30. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Logs.py +149 -0
  31. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Logs.pyc +0 -0
  32. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Node.py +500 -0
  33. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Node.pyc +0 -0
  34. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Options.py +130 -0
  35. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Options.pyc +0 -0
  36. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Runner.py +191 -0
  37. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Runner.pyc +0 -0
  38. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Scripting.py +358 -0
  39. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Scripting.pyc +0 -0
  40. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Task.py +669 -0
  41. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Task.pyc +0 -0
  42. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/TaskGen.py +341 -0
  43. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/TaskGen.pyc +0 -0
  44. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/__init__.py +4 -0
  45. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/__init__.pyc +0 -0
  46. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/ar.py +12 -0
  47. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/ar.pyc +0 -0
  48. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/asm.py +25 -0
  49. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/bison.py +29 -0
  50. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c.py +27 -0
  51. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_aliases.py +56 -0
  52. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_aliases.pyc +0 -0
  53. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_config.py +708 -0
  54. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_config.pyc +0 -0
  55. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_osx.py +121 -0
  56. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_osx.pyc +0 -0
  57. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_preproc.py +606 -0
  58. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_preproc.pyc +0 -0
  59. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_tests.py +110 -0
  60. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/c_tests.pyc +0 -0
  61. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/ccroot.py +372 -0
  62. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/ccroot.pyc +0 -0
  63. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/compiler_c.py +39 -0
  64. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/compiler_cxx.py +39 -0
  65. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/compiler_cxx.pyc +0 -0
  66. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/compiler_d.py +30 -0
  67. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/compiler_fc.py +45 -0
  68. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/cs.py +98 -0
  69. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/cxx.py +27 -0
  70. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/cxx.pyc +0 -0
  71. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/d.py +51 -0
  72. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/d_config.py +47 -0
  73. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/d_scan.py +133 -0
  74. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/dbus.py +30 -0
  75. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/dmd.py +43 -0
  76. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/errcheck.py +153 -0
  77. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/fc.py +123 -0
  78. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/fc_config.py +271 -0
  79. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/fc_scan.py +68 -0
  80. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/flex.py +27 -0
  81. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/g95.py +55 -0
  82. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/gas.py +10 -0
  83. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/gcc.py +98 -0
  84. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/gdc.py +34 -0
  85. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/gfortran.py +69 -0
  86. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/glib2.py +174 -0
  87. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/gnu_dirs.py +65 -0
  88. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/gxx.py +98 -0
  89. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/gxx.pyc +0 -0
  90. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/icc.py +31 -0
  91. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/icpc.py +30 -0
  92. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/ifort.py +42 -0
  93. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/intltool.py +78 -0
  94. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/irixcc.py +49 -0
  95. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/javaw.py +272 -0
  96. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/kde4.py +49 -0
  97. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/lua.py +19 -0
  98. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/msvc.py +650 -0
  99. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/nasm.py +13 -0
  100. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/perl.py +78 -0
  101. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/python.py +303 -0
  102. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/qt4.py +424 -0
  103. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/ruby.py +104 -0
  104. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/suncc.py +54 -0
  105. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/suncxx.py +55 -0
  106. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/tex.py +222 -0
  107. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/vala.py +215 -0
  108. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/waf_unit_test.py +79 -0
  109. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/winres.py +34 -0
  110. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/xlc.py +46 -0
  111. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Tools/xlcxx.py +46 -0
  112. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Utils.py +334 -0
  113. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/Utils.pyc +0 -0
  114. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/__init__.py +4 -0
  115. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/__init__.pyc +0 -0
  116. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/ansiterm.py +173 -0
  117. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/ansiterm.pyc +0 -0
  118. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/extras/__init__.py +4 -0
  119. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/extras/__init__.pyc +0 -0
  120. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/extras/compat15.py +223 -0
  121. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/extras/compat15.pyc +0 -0
  122. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/fixpy2.py +50 -0
  123. data/vendor/ux-trie/ux-0.1.9/.waf-1.6.8-3e3391c5f23fbabad81e6d17c63a1b1e/waflib/fixpy2.pyc +0 -0
  124. data/vendor/ux-trie/ux-0.1.9/src/bitVec.cpp +119 -0
  125. data/vendor/ux-trie/ux-0.1.9/src/bitVec.hpp +64 -0
  126. data/vendor/ux-trie/ux-0.1.9/src/bitVecTest.cpp +143 -0
  127. data/vendor/ux-trie/ux-0.1.9/src/cmdline.h +809 -0
  128. data/vendor/ux-trie/ux-0.1.9/src/rsDic.cpp +121 -0
  129. data/vendor/ux-trie/ux-0.1.9/src/rsDic.hpp +57 -0
  130. data/vendor/ux-trie/ux-0.1.9/src/ux.hpp +26 -0
  131. data/vendor/ux-trie/ux-0.1.9/src/uxMain.cpp +206 -0
  132. data/vendor/ux-trie/ux-0.1.9/src/uxMap.cpp +0 -0
  133. data/vendor/ux-trie/ux-0.1.9/src/uxMap.hpp +248 -0
  134. data/vendor/ux-trie/ux-0.1.9/src/uxMapTest.cpp +139 -0
  135. data/vendor/ux-trie/ux-0.1.9/src/uxTest.cpp +229 -0
  136. data/vendor/ux-trie/ux-0.1.9/src/uxTrie.cpp +529 -0
  137. data/vendor/ux-trie/ux-0.1.9/src/uxTrie.hpp +220 -0
  138. data/vendor/ux-trie/ux-0.1.9/src/uxUtil.cpp +92 -0
  139. data/vendor/ux-trie/ux-0.1.9/src/uxUtil.hpp +35 -0
  140. data/vendor/ux-trie/ux-0.1.9/src/wscript +43 -0
  141. data/vendor/ux-trie/ux-0.1.9/unittest_gtest.py +0 -0
  142. data/vendor/ux-trie/ux-0.1.9/unittest_gtest.pyc +0 -0
  143. data/vendor/ux-trie/ux-0.1.9/unittestt.py +166 -0
  144. data/vendor/ux-trie/ux-0.1.9/ux.pc.in +10 -0
  145. data/vendor/ux-trie/ux-0.1.9/waf +0 -0
  146. data/vendor/ux-trie/ux-0.1.9/wscript +32 -0
  147. metadata +249 -0
@@ -0,0 +1,298 @@
1
+ #! /usr/bin/env python
2
+ # encoding: utf-8
3
+ # WARNING! Do not edit! http://waf.googlecode.com/git/docs/wafbook/single.html#_obtaining_the_waf_file
4
+
5
+ import os,imp,sys
6
+ from waflib import Utils,Errors,Logs
7
+ import waflib.Node
8
+ HEXVERSION=0x1060800
9
+ WAFVERSION="1.6.8"
10
+ WAFREVISION="516a253cbdbb4eef3165c4d47c2074a0fb5dce95"
11
+ ABI=98
12
+ DBFILE='.wafpickle-%d'%ABI
13
+ APPNAME='APPNAME'
14
+ VERSION='VERSION'
15
+ TOP='top'
16
+ OUT='out'
17
+ WSCRIPT_FILE='wscript'
18
+ launch_dir=''
19
+ run_dir=''
20
+ top_dir=''
21
+ out_dir=''
22
+ waf_dir=''
23
+ local_repo=''
24
+ remote_repo='http://waf.googlecode.com/git/'
25
+ remote_locs=['branches/waf-%s/waflib/extras'%WAFVERSION,'trunk/waflib/extras','trunk/waflib/Tools']
26
+ g_module=None
27
+ STDOUT=1
28
+ STDERR=-1
29
+ BOTH=0
30
+ classes=[]
31
+ def create_context(cmd_name,*k,**kw):
32
+ global classes
33
+ for x in classes:
34
+ if x.cmd==cmd_name:
35
+ return x(*k,**kw)
36
+ ctx=Context(*k,**kw)
37
+ ctx.fun=cmd_name
38
+ return ctx
39
+ class store_context(type):
40
+ def __init__(cls,name,bases,dict):
41
+ super(store_context,cls).__init__(name,bases,dict)
42
+ name=cls.__name__
43
+ if name=='ctx'or name=='Context':
44
+ return
45
+ try:
46
+ cls.cmd
47
+ except AttributeError:
48
+ raise Errors.WafError('Missing command for the context class %r (cmd)'%name)
49
+ if not getattr(cls,'fun',None):
50
+ cls.fun=cls.cmd
51
+ global classes
52
+ classes.insert(0,cls)
53
+ ctx=store_context('ctx',(object,),{})
54
+ class Context(ctx):
55
+ errors=Errors
56
+ tools={}
57
+ def __init__(self,**kw):
58
+ try:
59
+ rd=kw['run_dir']
60
+ except KeyError:
61
+ global run_dir
62
+ rd=run_dir
63
+ class node_class(waflib.Node.Node):
64
+ pass
65
+ self.node_class=node_class
66
+ self.node_class.__module__="waflib.Node"
67
+ self.node_class.__name__="Nod3"
68
+ self.node_class.ctx=self
69
+ self.root=self.node_class('',None)
70
+ self.cur_script=None
71
+ self.path=self.root.find_dir(rd)
72
+ self.stack_path=[]
73
+ self.exec_dict={'ctx':self,'conf':self,'bld':self,'opt':self}
74
+ self.logger=None
75
+ def __hash__(self):
76
+ return id(self)
77
+ def load(self,tool_list,*k,**kw):
78
+ tools=Utils.to_list(tool_list)
79
+ path=Utils.to_list(kw.get('tooldir',''))
80
+ for t in tools:
81
+ module=load_tool(t,path)
82
+ fun=getattr(module,kw.get('name',self.fun),None)
83
+ if fun:
84
+ fun(self)
85
+ def execute(self):
86
+ global g_module
87
+ self.recurse([os.path.dirname(g_module.root_path)])
88
+ def pre_recurse(self,node):
89
+ self.stack_path.append(self.cur_script)
90
+ self.cur_script=node
91
+ self.path=node.parent
92
+ def post_recurse(self,node):
93
+ self.cur_script=self.stack_path.pop()
94
+ if self.cur_script:
95
+ self.path=self.cur_script.parent
96
+ def recurse(self,dirs,name=None,mandatory=True,once=True):
97
+ try:
98
+ cache=self.recurse_cache
99
+ except:
100
+ cache=self.recurse_cache={}
101
+ for d in Utils.to_list(dirs):
102
+ if not os.path.isabs(d):
103
+ d=os.path.join(self.path.abspath(),d)
104
+ WSCRIPT=os.path.join(d,WSCRIPT_FILE)
105
+ WSCRIPT_FUN=WSCRIPT+'_'+(name or self.fun)
106
+ node=self.root.find_node(WSCRIPT_FUN)
107
+ if node and(not once or node not in cache):
108
+ cache[node]=True
109
+ self.pre_recurse(node)
110
+ try:
111
+ function_code=node.read('rU')
112
+ exec(compile(function_code,node.abspath(),'exec'),self.exec_dict)
113
+ finally:
114
+ self.post_recurse(node)
115
+ elif not node:
116
+ node=self.root.find_node(WSCRIPT)
117
+ if node and(not once or node not in cache):
118
+ cache[node]=True
119
+ self.pre_recurse(node)
120
+ try:
121
+ wscript_module=load_module(node.abspath())
122
+ user_function=getattr(wscript_module,(name or self.fun),None)
123
+ if not user_function:
124
+ if not mandatory:
125
+ continue
126
+ raise Errors.WafError('No function %s defined in %s'%(name or self.fun,node.abspath()))
127
+ user_function(self)
128
+ finally:
129
+ self.post_recurse(node)
130
+ elif not node:
131
+ if not mandatory:
132
+ continue
133
+ raise Errors.WafError('No wscript file in directory %s'%d)
134
+ def exec_command(self,cmd,**kw):
135
+ subprocess=Utils.subprocess
136
+ kw['shell']=isinstance(cmd,str)
137
+ Logs.debug('runner: %r'%cmd)
138
+ Logs.debug('runner_env: kw=%s'%kw)
139
+ try:
140
+ if self.logger:
141
+ self.logger.info(cmd)
142
+ kw['stdout']=kw['stderr']=subprocess.PIPE
143
+ p=subprocess.Popen(cmd,**kw)
144
+ (out,err)=p.communicate()
145
+ if out:
146
+ self.logger.debug('out: %s'%out.decode(sys.stdout.encoding or'iso8859-1'))
147
+ if err:
148
+ self.logger.error('err: %s'%err.decode(sys.stdout.encoding or'iso8859-1'))
149
+ return p.returncode
150
+ else:
151
+ p=subprocess.Popen(cmd,**kw)
152
+ return p.wait()
153
+ except OSError:
154
+ return-1
155
+ def cmd_and_log(self,cmd,**kw):
156
+ subprocess=Utils.subprocess
157
+ kw['shell']=isinstance(cmd,str)
158
+ Logs.debug('runner: %r'%cmd)
159
+ if'quiet'in kw:
160
+ quiet=kw['quiet']
161
+ del kw['quiet']
162
+ else:
163
+ quiet=None
164
+ if'output'in kw:
165
+ to_ret=kw['output']
166
+ del kw['output']
167
+ else:
168
+ to_ret=STDOUT
169
+ kw['stdout']=kw['stderr']=subprocess.PIPE
170
+ if quiet is None:
171
+ self.to_log(cmd)
172
+ try:
173
+ p=subprocess.Popen(cmd,**kw)
174
+ (out,err)=p.communicate()
175
+ except Exception ,e:
176
+ raise Errors.WafError('Execution failure: %s'%str(e),ex=e)
177
+ if not isinstance(out,str):
178
+ out=out.decode(sys.stdout.encoding or'iso8859-1')
179
+ if not isinstance(err,str):
180
+ err=err.decode(sys.stdout.encoding or'iso8859-1')
181
+ if out and quiet!=STDOUT and quiet!=BOTH:
182
+ self.to_log('out: %s'%out)
183
+ if err and quiet!=STDERR and quiet!=BOTH:
184
+ self.to_log('err: %s'%err)
185
+ if p.returncode:
186
+ e=Errors.WafError('Command %r returned %r'%(cmd,p.returncode))
187
+ e.returncode=p.returncode
188
+ e.stderr=err
189
+ e.stdout=out
190
+ raise e
191
+ if to_ret==BOTH:
192
+ return(out,err)
193
+ elif to_ret==STDERR:
194
+ return err
195
+ return out
196
+ def fatal(self,msg,ex=None):
197
+ if self.logger:
198
+ self.logger.info('from %s: %s'%(self.path.abspath(),msg))
199
+ try:
200
+ msg='%s\n(complete log in %s)'%(msg,self.logger.handlers[0].baseFilename)
201
+ except:
202
+ pass
203
+ raise self.errors.ConfigurationError(msg,ex=ex)
204
+ def to_log(self,msg):
205
+ if not msg:
206
+ return
207
+ if self.logger:
208
+ self.logger.info(msg)
209
+ else:
210
+ sys.stderr.write(str(msg))
211
+ sys.stderr.flush()
212
+ def msg(self,msg,result,color=None):
213
+ self.start_msg(msg)
214
+ if not isinstance(color,str):
215
+ color=result and'GREEN'or'YELLOW'
216
+ self.end_msg(result,color)
217
+ def start_msg(self,msg):
218
+ try:
219
+ if self.in_msg:
220
+ self.in_msg+=1
221
+ return
222
+ except:
223
+ self.in_msg=0
224
+ self.in_msg+=1
225
+ try:
226
+ self.line_just=max(self.line_just,len(msg))
227
+ except AttributeError:
228
+ self.line_just=max(40,len(msg))
229
+ for x in(self.line_just*'-',msg):
230
+ self.to_log(x)
231
+ Logs.pprint('NORMAL',"%s :"%msg.ljust(self.line_just),sep='')
232
+ def end_msg(self,result,color=None):
233
+ self.in_msg-=1
234
+ if self.in_msg:
235
+ return
236
+ defcolor='GREEN'
237
+ if result==True:
238
+ msg='ok'
239
+ elif result==False:
240
+ msg='not found'
241
+ defcolor='YELLOW'
242
+ else:
243
+ msg=str(result)
244
+ self.to_log(msg)
245
+ Logs.pprint(color or defcolor,msg)
246
+ def load_special_tools(self,var,ban=[]):
247
+ global waf_dir
248
+ lst=self.root.find_node(waf_dir).find_node('waflib/extras').ant_glob(var)
249
+ for x in lst:
250
+ if not x.name in ban:
251
+ load_tool(x.name.replace('.py',''))
252
+ cache_modules={}
253
+ def load_module(path):
254
+ try:
255
+ return cache_modules[path]
256
+ except KeyError:
257
+ pass
258
+ module=imp.new_module(WSCRIPT_FILE)
259
+ try:
260
+ code=Utils.readf(path,m='rU')
261
+ except(IOError,OSError):
262
+ raise Errors.WafError('Could not read the file %r'%path)
263
+ module_dir=os.path.dirname(path)
264
+ sys.path.insert(0,module_dir)
265
+ exec(compile(code,path,'exec'),module.__dict__)
266
+ sys.path.remove(module_dir)
267
+ cache_modules[path]=module
268
+ return module
269
+ def load_tool(tool,tooldir=None):
270
+ tool=tool.replace('++','xx')
271
+ tool=tool.replace('java','javaw')
272
+ tool=tool.replace('compiler_cc','compiler_c')
273
+ if tooldir:
274
+ assert isinstance(tooldir,list)
275
+ sys.path=tooldir+sys.path
276
+ try:
277
+ __import__(tool)
278
+ ret=sys.modules[tool]
279
+ Context.tools[tool]=ret
280
+ return ret
281
+ finally:
282
+ for d in tooldir:
283
+ sys.path.remove(d)
284
+ else:
285
+ global waf_dir
286
+ try:
287
+ os.stat(os.path.join(waf_dir,'waflib','extras',tool+'.py'))
288
+ d='waflib.extras.%s'%tool
289
+ except:
290
+ try:
291
+ os.stat(os.path.join(waf_dir,'waflib','Tools',tool+'.py'))
292
+ d='waflib.Tools.%s'%tool
293
+ except:
294
+ d=tool
295
+ __import__(d)
296
+ ret=sys.modules[d]
297
+ Context.tools[tool]=ret
298
+ return ret
@@ -0,0 +1,37 @@
1
+ #! /usr/bin/env python
2
+ # encoding: utf-8
3
+ # WARNING! Do not edit! http://waf.googlecode.com/git/docs/wafbook/single.html#_obtaining_the_waf_file
4
+
5
+ import traceback,sys
6
+ class WafError(Exception):
7
+ def __init__(self,msg='',ex=None):
8
+ self.msg=msg
9
+ assert not isinstance(msg,Exception)
10
+ self.stack=[]
11
+ if ex:
12
+ if not msg:
13
+ self.msg=str(ex)
14
+ if isinstance(ex,WafError):
15
+ self.stack=ex.stack
16
+ else:
17
+ self.stack=traceback.extract_tb(sys.exc_info()[2])
18
+ self.stack+=traceback.extract_stack()[:-1]
19
+ self.verbose_msg=''.join(traceback.format_list(self.stack))
20
+ def __str__(self):
21
+ return str(self.msg)
22
+ class BuildError(WafError):
23
+ def __init__(self,error_tasks=[]):
24
+ self.tasks=error_tasks
25
+ WafError.__init__(self,self.format_error())
26
+ def format_error(self):
27
+ lst=['Build failed']
28
+ for tsk in self.tasks:
29
+ txt=tsk.format_error()
30
+ if txt:lst.append(txt)
31
+ return'\n'.join(lst)
32
+ class ConfigurationError(WafError):
33
+ pass
34
+ class TaskRescan(WafError):
35
+ pass
36
+ class TaskNotReady(WafError):
37
+ pass
@@ -0,0 +1,149 @@
1
+ #! /usr/bin/env python
2
+ # encoding: utf-8
3
+ # WARNING! Do not edit! http://waf.googlecode.com/git/docs/wafbook/single.html#_obtaining_the_waf_file
4
+
5
+ import os,re,traceback,sys
6
+ _nocolor=os.environ.get('NOCOLOR','no')not in('no','0','false')
7
+ try:
8
+ if not _nocolor:
9
+ import waflib.ansiterm
10
+ except:
11
+ pass
12
+ import logging
13
+ LOG_FORMAT="%(asctime)s %(c1)s%(zone)s%(c2)s %(message)s"
14
+ HOUR_FORMAT="%H:%M:%S"
15
+ zones=''
16
+ verbose=0
17
+ colors_lst={'USE':True,'BOLD':'\x1b[01;1m','RED':'\x1b[01;31m','GREEN':'\x1b[32m','YELLOW':'\x1b[33m','PINK':'\x1b[35m','BLUE':'\x1b[01;34m','CYAN':'\x1b[36m','NORMAL':'\x1b[0m','cursor_on':'\x1b[?25h','cursor_off':'\x1b[?25l',}
18
+ got_tty=not os.environ.get('TERM','dumb')in['dumb','emacs']
19
+ if got_tty:
20
+ try:
21
+ got_tty=sys.stderr.isatty()
22
+ except AttributeError:
23
+ got_tty=False
24
+ if(not got_tty and os.environ.get('TERM','dumb')!='msys')or _nocolor:
25
+ colors_lst['USE']=False
26
+ def get_term_cols():
27
+ return 80
28
+ try:
29
+ import struct,fcntl,termios
30
+ except ImportError:
31
+ pass
32
+ else:
33
+ if got_tty:
34
+ def get_term_cols_real():
35
+ dummy_lines,cols=struct.unpack("HHHH",fcntl.ioctl(sys.stderr.fileno(),termios.TIOCGWINSZ,struct.pack("HHHH",0,0,0,0)))[:2]
36
+ return cols
37
+ try:
38
+ get_term_cols_real()
39
+ except:
40
+ pass
41
+ else:
42
+ get_term_cols=get_term_cols_real
43
+ get_term_cols.__doc__="""
44
+ Get the console width in characters.
45
+
46
+ :return: the number of characters per line
47
+ :rtype: int
48
+ """
49
+ def get_color(cl):
50
+ if not colors_lst['USE']:return''
51
+ return colors_lst.get(cl,'')
52
+ class color_dict(object):
53
+ def __getattr__(self,a):
54
+ return get_color(a)
55
+ def __call__(self,a):
56
+ return get_color(a)
57
+ colors=color_dict()
58
+ re_log=re.compile(r'(\w+): (.*)',re.M)
59
+ class log_filter(logging.Filter):
60
+ def __init__(self,name=None):
61
+ pass
62
+ def filter(self,rec):
63
+ rec.c1=colors.PINK
64
+ rec.c2=colors.NORMAL
65
+ rec.zone=rec.module
66
+ if rec.levelno>=logging.INFO:
67
+ if rec.levelno>=logging.ERROR:
68
+ rec.c1=colors.RED
69
+ elif rec.levelno>=logging.WARNING:
70
+ rec.c1=colors.YELLOW
71
+ else:
72
+ rec.c1=colors.GREEN
73
+ return True
74
+ m=re_log.match(rec.msg)
75
+ if m:
76
+ rec.zone=m.group(1)
77
+ rec.msg=m.group(2)
78
+ if zones:
79
+ return getattr(rec,'zone','')in zones or'*'in zones
80
+ elif not verbose>2:
81
+ return False
82
+ return True
83
+ class formatter(logging.Formatter):
84
+ def __init__(self):
85
+ logging.Formatter.__init__(self,LOG_FORMAT,HOUR_FORMAT)
86
+ def format(self,rec):
87
+ if rec.levelno>=logging.WARNING or rec.levelno==logging.INFO:
88
+ try:
89
+ msg=rec.msg.decode('utf-8')
90
+ except:
91
+ msg=rec.msg
92
+ return'%s%s%s'%(rec.c1,msg,rec.c2)
93
+ return logging.Formatter.format(self,rec)
94
+ log=None
95
+ def debug(*k,**kw):
96
+ if verbose:
97
+ k=list(k)
98
+ k[0]=k[0].replace('\n',' ')
99
+ global log
100
+ log.debug(*k,**kw)
101
+ def error(*k,**kw):
102
+ global log
103
+ log.error(*k,**kw)
104
+ if verbose>2:
105
+ st=traceback.extract_stack()
106
+ if st:
107
+ st=st[:-1]
108
+ buf=[]
109
+ for filename,lineno,name,line in st:
110
+ buf.append(' File "%s", line %d, in %s'%(filename,lineno,name))
111
+ if line:
112
+ buf.append(' %s'%line.strip())
113
+ if buf:log.error("\n".join(buf))
114
+ def warn(*k,**kw):
115
+ global log
116
+ log.warn(*k,**kw)
117
+ def info(*k,**kw):
118
+ global log
119
+ log.info(*k,**kw)
120
+ def init_log():
121
+ global log
122
+ log=logging.getLogger('waflib')
123
+ log.handlers=[]
124
+ log.filters=[]
125
+ hdlr=logging.StreamHandler()
126
+ hdlr.setFormatter(formatter())
127
+ log.addHandler(hdlr)
128
+ log.addFilter(log_filter())
129
+ log.setLevel(logging.DEBUG)
130
+ def make_logger(path,name):
131
+ logger=logging.getLogger(name)
132
+ hdlr=logging.FileHandler(path,'w')
133
+ formatter=logging.Formatter('%(message)s')
134
+ hdlr.setFormatter(formatter)
135
+ logger.addHandler(hdlr)
136
+ logger.setLevel(logging.DEBUG)
137
+ return logger
138
+ def make_mem_logger(name,to_log,size=10000):
139
+ from logging.handlers import MemoryHandler
140
+ logger=logging.getLogger(name)
141
+ hdlr=MemoryHandler(size,target=to_log)
142
+ formatter=logging.Formatter('%(message)s')
143
+ hdlr.setFormatter(formatter)
144
+ logger.addHandler(hdlr)
145
+ logger.memhandler=hdlr
146
+ logger.setLevel(logging.DEBUG)
147
+ return logger
148
+ def pprint(col,str,label='',sep='\n'):
149
+ sys.stderr.write("%s%s%s %s%s"%(colors(col),str,colors.NORMAL,label,sep))