$codeExportStyles="Code"|"Input";
$hiddenPackageExportContext="Dooooop`Doop`Doop`Doop`";
makeUsageRule
makeUsageRule
exprDefinitionToUsage
exprDefinitionToUsage
exprFindDefinitions
exprFindDefinitions
defsUsagesCell
defsUsagesCell
cellsBuildPackageCore
cellsBuildPackageCore
notebookExtractPackageName
notebookExtractPackageName
NotebookToPackage
NotebookToPackage
NotebookToPackage[nb_NotebookObject]:=With[{cells=Replace[NotebookRead[nb],{c_Cell{c},{}:>First@NotebookGet[nb]}]},With[{data=Reap[cellsBuildPackageCore@cells]},With[{usagecells=defsUsagesCell[Flatten@Last@data]},Notebook[Flatten@{Cell[notebookExtractPackageName[nb],"Section"],Cell[BoxData@RowBox[{RowBox[{"BeginPackage","[","\""<>notebookExtractPackageName[nb]<>"`\"","]"}],";"}],"Code"],If[Length@usagecells[[1]]>0,usagecells[[1]],{}],If[Length@usagecells[[2]]>0,Cell[CellGroupData[Flatten@{Cell["Package Declarations","Subsubsection"],Cell[BoxData@RowBox[{RowBox[{"AppendTo","[",RowBox[{"$ContextPath",",",RowBox[{"$Context","<>","\"Package`\""}]}],"]"}],";"}],"Code"],Cell[BoxData@RowBox[{RowBox[{"Begin","[","\"`Package`\"","]"}],";"}],"Code"],usagecells[[2]],Cell[BoxData@RowBox[{RowBox[{"End","[","]"}],";"}],"Code"]},Closed]],Nothing],Cell[BoxData@RowBox[{RowBox[{"Begin","[","\"`Private`\"","]"}],";"}],"Code"],Cell[CellGroupData[Flatten@{Cell["Implementation","Subsection"],Cell[BoxData@RowBox@{"(*",RowBox@{"Package"," ","Implementation"},"*)"},"Code"],First@data}]],Cell[CellGroupData[{Cell["End","Subsection"],Cell[BoxData@RowBox[{RowBox[{"End","[","]"}],";"}],"Code"],Cell[BoxData@RowBox[{RowBox[{"EndPackage","[","]"}],";"}],"Code"]}]]},StyleDefinitions"Package.nb"]]]];
NotebookToPackage[file_String?FileExistsQ]:=With[{nb=NotebookOpen[file,VisibleFalse]},(NotebookClose[nb];#)&@NotebookToPackage[nb]]