Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 8003ffe
Showing
16 changed files
with
279 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
.DS_Store | ||
log/* | ||
tmp/**/* | ||
*.swp | ||
*.swo | ||
nbproject | ||
.project | ||
.idea | ||
.idea/** | ||
*~ | ||
**/*~ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
h1. DocX Builder | ||
|
||
_DocX Builder_ is a small utility to help you compose a docx (Microsoft Word 2007) based on a template's XML. | ||
|
||
The @slice_template.rb@ can be used separately for non-docx applications. | ||
|
||
The steps: | ||
# Create a docx file with _Microsoft Word_ or _OpenOffice.org_ | ||
# Unzip it (the docx file is actually a ZIP package) | ||
# Create your template from @word/document.xml@ | ||
# Open the template and reformat it (I used RubyMine) | ||
# Find the parts you need to generate programmatically, and mark them up with <!-- BEGIN SOMETHING --> ... <!-- END SOMETHING -->, see @example/plan_report_template.xml@ | ||
# Remove the formatting (compact the XML) | ||
# Create your builder, see @example.rb@ | ||
|
||
h2. The example explained | ||
|
||
pre. | ||
_____head______ _________area_______________________________________ _foot_ | ||
| | | | | ||
| | ________goal________________________| | | ||
| | | | | | ||
| | | _______objective____| | | ||
| | | | | | | ||
| (Plan Name) | (Area Name) | (Goal Name) | (Objective Name) | | | ||
_____________________________________________________________________________ | ||
XML DOCUMENT | ||
|
||
You can assign a text to a placeholder: | ||
|
||
pre. | ||
template['head']['Plan Name'] = @plan.name | ||
|
||
Or you can replace a slice with a string, that can be composed by multiplying that slice: | ||
|
||
pre. | ||
template['area'] = | ||
@plan.areas.map do |area| | ||
|
||
area_slice = template['area'].clone | ||
area_slice['Area Name'] = area.description | ||
area_slice['goal'] = '...' | ||
end | ||
|
||
See @example.rb@ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
require 'slice_template' | ||
|
||
class DocxBuilder | ||
def initialize(template_filename, template_dirname) | ||
@template_filename = template_filename | ||
@template_dirname = template_dirname | ||
end | ||
|
||
def build | ||
template = SliceTemplate.new(@template_filename); | ||
yield template | ||
build_docx(template.render) | ||
end | ||
|
||
private | ||
|
||
def build_docx(content) | ||
docx_content = nil | ||
in_temp_dir do |temp_dir| | ||
system("cp -r #{@template_dirname} #{temp_dir}/plan_report") | ||
open("#{temp_dir}/plan_report/word/document.xml", "w") do |file| | ||
file.write(content) | ||
end | ||
system("cd #{temp_dir}/plan_report; zip -r ../plan_report.docx *") | ||
docx_content = File.read("#{temp_dir}/plan_report.docx") | ||
end | ||
docx_content | ||
end | ||
|
||
def in_temp_dir | ||
temp_dir = "/tmp/docx_#{Time.now.to_f.to_s}" | ||
Dir.mkdir(temp_dir) | ||
yield(temp_dir) | ||
system("rm -Rf #{temp_dir}") | ||
end | ||
end | ||
|
||
|
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
require 'docx_builder' | ||
|
||
|
||
plan_struct = Struct.new(:name, :areas, :goals_by_area, :objectives_by_goal) | ||
area_struct = Struct.new(:description, :id) | ||
goal_struct = Struct.new(:description, :id) | ||
objective_struct = Struct.new(:description) | ||
@plan = plan_struct.new | ||
@plan.name = 'Business Plan for 2011' | ||
@plan.areas = [area_struct.new('Software Development', 1), area_struct.new('Cooking', 2)] | ||
@plan.goals_by_area = { | ||
1 => [ goal_struct.new('Create a new app', 1), goal_struct.new('Create another app', 2)], | ||
2 => [ goal_struct.new('Make a new recipe', 3), goal_struct.new('Open a restaurant', 4)], | ||
} | ||
@plan.objectives_by_goal = { | ||
1 => [ objective_struct.new('It should be interesting'), objective_struct.new('It should be simple') ], | ||
2 => [ objective_struct.new('It should be revolutionary'), objective_struct.new('It should be unique') ], | ||
3 => [ objective_struct.new('Make a unique recipe'), objective_struct.new('Make a tasty recipe') ], | ||
4 => [ objective_struct.new('Serve high quality food'), objective_struct.new('Make it cheap') ], | ||
} | ||
|
||
|
||
file_path = "#{File.dirname(__FILE__)}/example/plan_report_template.xml" | ||
dir_path = "#{File.dirname(__FILE__)}/example/plan_report_template" | ||
|
||
report = DocxBuilder.new(file_path, dir_path).build do |template| | ||
|
||
template['head']['Plan Name'] = @plan.name | ||
template['area'] = | ||
@plan.areas.map do |area| | ||
|
||
area_slice = template['area'].clone | ||
area_slice['Area Name'] = area.description | ||
area_slice['goal'] = | ||
@plan.goals_by_area[area.id].map do |goal| | ||
|
||
goal_slice = template['goal'].clone | ||
goal_slice['Goal Name'] = goal.description | ||
goal_slice['objective'] = | ||
@plan.objectives_by_goal[goal.id].map do |objective| | ||
objective_slice = template['objective'].clone | ||
objective_slice['Objective Name'] = objective.description | ||
objective_slice | ||
end | ||
goal_slice | ||
end | ||
area_slice | ||
end | ||
end | ||
|
||
|
||
open("example.docx", "w") { |file| file.write(report) } | ||
|
||
# ... or in a Rails controller: | ||
# response.headers['Content-disposition'] = 'attachment; filename=plan_report.docx' | ||
# render :text => report, :content_type => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
<!-- BEGIN HEAD --><?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<w:document xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"><w:body><w:p><w:pPr><w:pStyle w:val="style1"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr><w:spacing w:after="120" w:before="240"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Strategic Plan: (Plan Name)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style0"/></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><!-- END HEAD --><!-- BEGIN AREA --><w:p><w:pPr><w:pStyle w:val="style2"/><w:numPr><w:ilvl w:val="1"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Area: (Area Name)</w:t></w:r></w:p><!-- BEGIN GOAL --><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal Name)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><!-- BEGIN OBJECTIVE --><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="0" w:name="__DdeLink__0_226207805"/><w:bookmarkEnd w:id="0"/><w:r><w:rPr></w:rPr><w:t>(Objective Name)</w:t></w:r></w:p><!-- END OBJECTIVE --><!-- END GOAL --><!-- END AREA --><!-- BEGIN FOOT --><w:p><w:pPr><w:pStyle w:val="style17"/><w:spacing w:after="120" w:before="0"/></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:sectPr><w:formProt w:val="off"/><w:pgSz w:h="16838" w:w="11906"/><w:textDirection w:val="lrTb"/><w:pgNumType w:fmt="decimal"/><w:type w:val="nextPage"/><w:pgMar w:bottom="1134" w:left="1134" w:right="1134" w:top="1134"/></w:sectPr></w:body></w:document><!-- END FOOT --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Override PartName="/word/_rels/document.xml.rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/><Override PartName="/word/numbering.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/><Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/><Override PartName="/_rels/.rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/><Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/> | ||
</Types> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/> | ||
</Relationships> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><TotalTime>0</TotalTime></Properties> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dcterms:created xsi:type="dcterms:W3CDTF">2010-05-28T19:47:48.00Z</dcterms:created><dc:creator>Levente Bagi</dc:creator><cp:revision>0</cp:revision></cp:coreProperties> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering" Target="numbering.xml"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/> | ||
</Relationships> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<w:document xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"><w:body><w:p><w:pPr><w:pStyle w:val="style1"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr><w:spacing w:after="120" w:before="240"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Strategic Plan: (Strategic Plan Name)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style0"/></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style2"/><w:numPr><w:ilvl w:val="1"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Area: (Area 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="0" w:name="__DdeLink__0_226207805"/><w:bookmarkEnd w:id="0"/><w:r><w:rPr></w:rPr><w:t>(Objective 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="1" w:name="__DdeLink__0_2262078051"/><w:bookmarkEnd w:id="1"/><w:r><w:rPr></w:rPr><w:t>(Objective 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="2" w:name="__DdeLink__0_22620780511"/><w:bookmarkEnd w:id="2"/><w:r><w:rPr></w:rPr><w:t>(Objective 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style2"/><w:numPr><w:ilvl w:val="1"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Area: (Area 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="3" w:name="__DdeLink__0_2262078052"/><w:bookmarkEnd w:id="3"/><w:r><w:rPr></w:rPr><w:t>(Objective 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="4" w:name="__DdeLink__0_22620780512"/><w:bookmarkEnd w:id="4"/><w:r><w:rPr></w:rPr><w:t>(Objective 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="5" w:name="__DdeLink__0_226207805111"/><w:bookmarkEnd w:id="5"/><w:r><w:rPr></w:rPr><w:t>(Objective 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style2"/><w:numPr><w:ilvl w:val="1"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Area: (Area 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="6" w:name="__DdeLink__0_2262078053"/><w:bookmarkEnd w:id="6"/><w:r><w:rPr></w:rPr><w:t>(Objective 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="7" w:name="__DdeLink__0_22620780513"/><w:bookmarkEnd w:id="7"/><w:r><w:rPr></w:rPr><w:t>(Objective 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style3"/><w:numPr><w:ilvl w:val="2"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Goal: (Goal 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/></w:pPr><w:r><w:rPr></w:rPr><w:t>Objectives:</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:bookmarkStart w:id="8" w:name="__DdeLink__0_226207805112"/><w:bookmarkEnd w:id="8"/><w:r><w:rPr></w:rPr><w:t>(Objective 1)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 2)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:rPr></w:rPr><w:t>(Objective 3)</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="style17"/><w:spacing w:after="120" w:before="0"/></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:sectPr><w:formProt w:val="off"/><w:pgSz w:h="16838" w:w="11906"/><w:textDirection w:val="lrTb"/><w:pgNumType w:fmt="decimal"/><w:type w:val="nextPage"/><w:pgMar w:bottom="1134" w:left="1134" w:right="1134" w:top="1134"/></w:sectPr></w:body></w:document> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<w:fonts xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:font w:name="Times New Roman"><w:charset w:val="00"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Symbol"><w:charset w:val="02"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Arial"><w:charset w:val="00"/><w:family w:val="swiss"/><w:pitch w:val="variable"/></w:font><w:font w:name="Liberation Serif"><w:altName w:val="Times New Roman"/><w:charset w:val="80"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font></w:fonts> |
Oops, something went wrong.