mirror of
https://github.com/github/semantic.git
synced 2024-12-22 06:11:49 +03:00
Expose imports in tag and toc output
This commit is contained in:
parent
9e3cbe07bb
commit
9460066bb4
@ -29,6 +29,7 @@ import qualified Language.Markdown.Syntax as Markdown
|
|||||||
data Declaration
|
data Declaration
|
||||||
= MethodDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language, declarationReceiver :: Maybe T.Text }
|
= MethodDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language, declarationReceiver :: Maybe T.Text }
|
||||||
| ClassDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language }
|
| ClassDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language }
|
||||||
|
| ImportDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language }
|
||||||
| FunctionDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language }
|
| FunctionDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language }
|
||||||
| HeadingDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language, declarationLevel :: Int }
|
| HeadingDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language, declarationLevel :: Int }
|
||||||
| ErrorDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language }
|
| ErrorDeclaration { declarationIdentifier :: T.Text, declarationText :: T.Text, declarationLanguage :: Maybe Language }
|
||||||
@ -116,6 +117,12 @@ instance CustomHasDeclaration Declaration.Class where
|
|||||||
= Just $ ClassDeclaration (getSource identifierAnn) (getClassSource blob (In ann decl)) blobLanguage
|
= Just $ ClassDeclaration (getSource identifierAnn) (getClassSource blob (In ann decl)) blobLanguage
|
||||||
where getSource = toText . flip Source.slice blobSource . getField
|
where getSource = toText . flip Source.slice blobSource . getField
|
||||||
|
|
||||||
|
instance CustomHasDeclaration Declaration.Import where
|
||||||
|
customToDeclaration blob@Blob{..} ann decl@(Declaration.Import (Term (In fromAnn _), _) _ _)
|
||||||
|
-- Imports
|
||||||
|
= Just $ ImportDeclaration (getSource fromAnn) (getImportSource blob (In ann decl)) blobLanguage
|
||||||
|
where getSource = toText . flip Source.slice blobSource . getField
|
||||||
|
|
||||||
-- | Produce a 'Declaration' for 'Union's using the 'HasDeclaration' instance & therefore using a 'CustomHasDeclaration' instance when one exists & the type is listed in 'DeclarationStrategy'.
|
-- | Produce a 'Declaration' for 'Union's using the 'HasDeclaration' instance & therefore using a 'CustomHasDeclaration' instance when one exists & the type is listed in 'DeclarationStrategy'.
|
||||||
instance Apply HasDeclaration fs => CustomHasDeclaration (Union fs) where
|
instance Apply HasDeclaration fs => CustomHasDeclaration (Union fs) where
|
||||||
customToDeclaration blob ann = apply (Proxy :: Proxy HasDeclaration) (toDeclaration blob ann)
|
customToDeclaration blob ann = apply (Proxy :: Proxy HasDeclaration) (toDeclaration blob ann)
|
||||||
@ -139,6 +146,7 @@ class HasDeclarationWithStrategy (strategy :: Strategy) syntax where
|
|||||||
type family DeclarationStrategy syntax where
|
type family DeclarationStrategy syntax where
|
||||||
DeclarationStrategy Declaration.Class = 'Custom
|
DeclarationStrategy Declaration.Class = 'Custom
|
||||||
DeclarationStrategy Declaration.Function = 'Custom
|
DeclarationStrategy Declaration.Function = 'Custom
|
||||||
|
DeclarationStrategy Declaration.Import = 'Custom
|
||||||
DeclarationStrategy Declaration.Method = 'Custom
|
DeclarationStrategy Declaration.Method = 'Custom
|
||||||
DeclarationStrategy Markdown.Heading = 'Custom
|
DeclarationStrategy Markdown.Heading = 'Custom
|
||||||
DeclarationStrategy Syntax.Error = 'Custom
|
DeclarationStrategy Syntax.Error = 'Custom
|
||||||
@ -175,3 +183,10 @@ getClassSource Blob{..} (In a r)
|
|||||||
bodyRange = getField <$> case r of
|
bodyRange = getField <$> case r of
|
||||||
Declaration.Class _ _ _ (Term (In a' _), _) -> Just a'
|
Declaration.Class _ _ _ (Term (In a' _), _) -> Just a'
|
||||||
in maybe mempty (T.stripEnd . toText . flip Source.slice blobSource . subtractRange declRange) bodyRange
|
in maybe mempty (T.stripEnd . toText . flip Source.slice blobSource . subtractRange declRange) bodyRange
|
||||||
|
|
||||||
|
getImportSource :: (HasField fields Range) => Blob -> TermF Declaration.Import (Record fields) (Term syntax (Record fields), a) -> T.Text
|
||||||
|
getImportSource Blob{..} (In a r)
|
||||||
|
= let declRange = getField a
|
||||||
|
bodyRange = getField <$> case r of
|
||||||
|
Declaration.Import _ _ (Term (In a' _), _) -> Just a'
|
||||||
|
in maybe mempty (T.stripEnd . toText . flip Source.slice blobSource . subtractRange declRange) bodyRange
|
||||||
|
@ -181,6 +181,7 @@ renderToCTerm Blob{..} = uncurry Summaries . bimap toMap toMap . List.partition
|
|||||||
toCategoryName :: Declaration -> T.Text
|
toCategoryName :: Declaration -> T.Text
|
||||||
toCategoryName declaration = case declaration of
|
toCategoryName declaration = case declaration of
|
||||||
ClassDeclaration{} -> "Class"
|
ClassDeclaration{} -> "Class"
|
||||||
|
ImportDeclaration{} -> "Import"
|
||||||
FunctionDeclaration{} -> "Function"
|
FunctionDeclaration{} -> "Function"
|
||||||
MethodDeclaration{} -> "Method"
|
MethodDeclaration{} -> "Method"
|
||||||
HeadingDeclaration _ _ _ l -> "Heading " <> T.pack (show l)
|
HeadingDeclaration _ _ _ l -> "Heading " <> T.pack (show l)
|
||||||
|
Loading…
Reference in New Issue
Block a user